]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
dist
authorMark Otto <markdotto@gmail.com>
Wed, 24 Jun 2026 22:55:52 +0000 (15:55 -0700)
committerMark Otto <markdotto@gmail.com>
Wed, 24 Jun 2026 22:55:52 +0000 (15:55 -0700)
24 files changed:
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/base-component.js
js/dist/base-component.js.map
js/dist/carousel.js
js/dist/carousel.js.map
js/dist/dom/selector-engine.js
js/dist/dom/selector-engine.js.map
js/dist/menu.js
js/dist/menu.js.map
js/dist/range.js [new file with mode: 0644]
js/dist/range.js.map [new file with mode: 0644]
js/dist/tooltip.js
js/dist/tooltip.js.map

index a1b5bbbe555fbeaddd142879dc712fc065aff1dc..63f29c78636846b888919341fefae7c64c7276d8 100644 (file)
 @layer content {
   .list-unstyled {
     padding-inline-start: 0;
-    list-style: none;
+    list-style-type: "";
   }
   .list-inline {
     padding-inline-start: 0;
-    list-style: none;
+    list-style-type: "";
   }
   .list-inline-item {
     display: inline-block;
     background-color: var(--bs-control-action-hover-bg);
   }
   .form-control-plaintext {
+    --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-radius-5);
+    --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: 0.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 0.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='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
     display: block;
     width: 100%;
     padding: var(--bs-control-padding-y) 0;
     padding-inline-end: var(--bs-control-padding-x);
     background-image: none;
   }
-  @media (prefers-color-scheme: dark) {
-    select.form-control,
-    .form-control-caret {
-      background-image: var(--bs-control-select-bg-dark);
-    }
+  [data-bs-theme=dark] select.form-control,
+  [data-bs-theme=dark] .form-control-caret {
+    background-image: var(--bs-control-select-bg-dark);
   }
   .form-control-sm {
     --bs-control-min-height: var(--bs-btn-input-sm-min-height);
     color: var(--bs-secondary-fg);
     cursor: default;
   }
+  .radio:disabled:checked {
+    opacity: var(--bs-radio-disabled-opacity);
+  }
   .radio:focus-visible {
     outline: var(--bs-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
     outline: var(--bs-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
+  .switch:has(input:disabled:not(:checked)) {
+    --bs-switch-bg: var(--bs-switch-disabled-bg);
+    --bs-switch-indicator-bg: var(--bs-switch-disabled-indicator-bg);
+  }
+  .switch:has(input:disabled:not(:checked))::before {
+    opacity: 0.4;
+  }
+  .switch:has(input:disabled:not(:checked)) ~ label {
+    color: var(--bs-fg-3);
+    cursor: default;
+  }
   .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));
   .switch:has(input:checked)::before {
     inset-inline-start: calc(100% - var(--bs-switch-indicator-width) - 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: 0.4;
+  .switch:has(input:checked:disabled) {
+    opacity: 0.65;
   }
-  .switch:has(input:disabled) ~ label {
-    color: var(--bs-secondary-fg);
+  .switch:has(input:checked:disabled) ~ label {
+    color: var(--bs-fg-3);
     cursor: default;
   }
   .switch-sm {
     --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-track-fill-bg: var(--bs-primary-base);
+    --bs-range-track-disabled-bg: color-mix(in oklch, var(--bs-bg-4), var(--bs-fg-3));
     --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-transition-property: background-color, border-color, box-shadow;
     --bs-range-thumb-transition-timing: 0.15s ease-in-out;
     --bs-range-thumb-transition: var(--bs-range-thumb-transition-property) var(--bs-range-thumb-transition-timing);
+    --bs-range-tick-width: var(--bs-border-width);
+    --bs-range-tick-height: 0.5rem;
+    --bs-range-tick-bg: var(--bs-border-color);
+    position: relative;
+    display: block;
+    width: 100%;
+  }
+  .form-range-input {
+    display: block;
     width: 100%;
     height: calc(var(--bs-range-thumb-height) + var(--bs-focus-ring-width) * 2);
     padding: 0;
     appearance: none;
     background-color: transparent;
   }
-  .form-range:hover::-webkit-slider-thumb {
+  .form-range-input:hover::-webkit-slider-thumb {
     outline: var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent);
   }
-  .form-range:hover::-moz-range-thumb {
+  .form-range-input:hover::-moz-range-thumb {
     outline: var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent);
   }
-  .form-range:focus-visible {
+  .form-range-input:focus-visible {
     outline: 0;
   }
-  .form-range:focus-visible::-webkit-slider-thumb {
+  .form-range-input:focus-visible::-webkit-slider-thumb {
     outline: var(--bs-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
     --bs-focus-ring-offset: 0;
   }
-  .form-range:focus-visible::-moz-range-thumb {
+  .form-range-input:focus-visible::-moz-range-thumb {
     outline: var(--bs-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
     --bs-focus-ring-offset: 0;
   }
-  .form-range::-moz-focus-outer {
+  .form-range-input::-moz-focus-outer {
     border: 0;
   }
-  .form-range::-webkit-slider-thumb {
+  .form-range-input::-webkit-slider-thumb {
     width: var(--bs-range-thumb-width);
     height: var(--bs-range-thumb-height);
     -webkit-appearance: none;
     transition: var(--bs-range-thumb-transition);
   }
   @media (prefers-reduced-motion: reduce) {
-    .form-range::-webkit-slider-thumb {
+    .form-range-input::-webkit-slider-thumb {
       transition: none;
     }
   }
-  .form-range::-webkit-slider-thumb:active {
+  .form-range-input::-webkit-slider-thumb:active {
     background-color: var(--bs-range-thumb-active-bg);
     background-image: var(--bs-gradient);
   }
-  .form-range::-webkit-slider-thumb {
+  .form-range-input::-webkit-slider-thumb {
     margin-top: calc((var(--bs-range-track-height) - var(--bs-range-thumb-height)) * 0.5);
   }
-  .form-range::-moz-range-thumb {
+  .form-range-input::-moz-range-thumb {
     width: var(--bs-range-thumb-width);
     height: var(--bs-range-thumb-height);
     appearance: none;
     transition: var(--bs-range-thumb-transition);
   }
   @media (prefers-reduced-motion: reduce) {
-    .form-range::-moz-range-thumb {
+    .form-range-input::-moz-range-thumb {
       transition: none;
     }
   }
-  .form-range::-moz-range-thumb:active {
+  .form-range-input::-moz-range-thumb:active {
     background-color: var(--bs-range-thumb-active-bg);
     background-image: var(--bs-gradient);
   }
-  .form-range::-webkit-slider-runnable-track {
+  .form-range-input::-webkit-slider-runnable-track {
     width: var(--bs-range-track-width);
     height: var(--bs-range-track-height);
     color: transparent;
     cursor: var(--bs-range-track-cursor);
     background-color: var(--bs-range-track-bg);
+    background-image: linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill, 0) * 100%), transparent calc(var(--bs-range-fill, 0) * 100%));
     border-color: transparent;
     border-radius: var(--bs-range-track-border-radius);
     box-shadow: var(--bs-range-track-box-shadow);
   }
-  .form-range::-moz-range-track {
+  .form-range-input::-moz-range-track {
     width: var(--bs-range-track-width);
     height: var(--bs-range-track-height);
     color: transparent;
     cursor: var(--bs-range-track-cursor);
     background-color: var(--bs-range-track-bg);
+    background-image: linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill, 0) * 100%), transparent calc(var(--bs-range-fill, 0) * 100%));
     border-color: transparent;
     border-radius: var(--bs-range-track-border-radius);
     box-shadow: var(--bs-range-track-box-shadow);
   }
-  .form-range:disabled {
+  .form-range-input:disabled {
     pointer-events: none;
   }
-  .form-range:disabled::-webkit-slider-thumb {
+  .form-range-input:disabled::-webkit-slider-thumb {
     background-color: var(--bs-range-thumb-disabled-bg);
   }
-  .form-range:disabled::-moz-range-thumb {
+  .form-range-input:disabled::-moz-range-thumb {
     background-color: var(--bs-range-thumb-disabled-bg);
   }
+  .form-range-input:disabled::-webkit-slider-runnable-track {
+    --bs-range-track-fill-bg: var(--bs-range-track-disabled-bg);
+  }
+  .form-range-input:disabled::-moz-range-track {
+    --bs-range-track-fill-bg: var(--bs-range-track-disabled-bg);
+  }
+  .form-range-bubble {
+    position: absolute;
+    bottom: 100%;
+    left: calc(var(--bs-range-thumb-width) * 0.5 + var(--bs-range-fill, 0) * (100% - var(--bs-range-thumb-width)));
+    margin-bottom: var(--bs-tooltip-arrow-height);
+    pointer-events: none;
+    transform: translateX(-50%);
+  }
+  .form-range-bubble .tooltip-arrow {
+    position: absolute;
+    bottom: calc(-1 * var(--bs-tooltip-arrow-height));
+    left: 50%;
+    transform: translateX(-50%);
+  }
+  .form-range-ticks {
+    display: grid;
+    padding-inline: calc(var(--bs-range-thumb-width) * 0.25);
+  }
+  .form-range-tick {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-self: start;
+    width: 0;
+  }
+  .form-range-tick::before {
+    width: var(--bs-range-tick-width);
+    height: var(--bs-range-tick-height);
+    content: "";
+    background-color: var(--bs-range-tick-bg);
+  }
+  .form-range-tick:first-child {
+    align-items: flex-start;
+  }
+  .form-range-tick:last-child {
+    align-items: flex-end;
+  }
+  .form-range-tick-label {
+    margin-top: 0.125rem;
+    font-size: var(--bs-font-size-sm);
+    color: var(--bs-fg-2);
+    white-space: nowrap;
+  }
 }
 @layer forms {
   .form-floating {
-    --bs-form-floating-height: calc(3.5rem + var(--bs-border-width) * 2);
+    --bs-form-floating-height: calc(3.75rem + 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-x: calc(var(--bs-btn-input-padding-x) * 1.25);
     --bs-form-floating-padding-y: 1rem;
     --bs-form-floating-input-padding-t: 1.625rem;
     --bs-form-floating-input-padding-b: 0.625rem;
     --bs-form-floating-label-height: 1.5em;
+    --bs-form-floating-label-bg: var(--bs-btn-input-bg);
+    --bs-form-floating-label-disabled-bg: var(--bs-bg-2);
     --bs-form-floating-label-opacity: 0.65;
     --bs-form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
     --bs-form-floating-label-disabled-color: var(--bs-fg-3);
     text-overflow: ellipsis;
     white-space: nowrap;
     pointer-events: none;
-    border: var(--bs-input-btn-border-width) solid transparent;
+    border: var(--bs-border-width) solid transparent;
     transform-origin: 0 0;
     transition: var(--bs-form-floating-transition);
   }
       transition: none;
     }
   }
+  .form-floating > label:has(~ textarea) {
+    align-items: flex-start;
+  }
   .form-floating > .form-control,
   .form-floating > .form-control-plaintext {
     height: var(--bs-form-floating-height);
     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 {
+  .form-floating > label:has(~ .form-control:focus),
+  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),
+  .form-floating > label:has(~ .form-control-plaintext) {
     transform: var(--bs-form-floating-label-transform);
   }
-  .form-floating > .form-control:-webkit-autofill ~ label {
+  .form-floating > label:has(~ .form-control:-webkit-autofill) {
     transform: var(--bs-form-floating-label-transform);
   }
-  .form-floating > textarea:focus ~ label::after,
-  .form-floating > textarea:not(:placeholder-shown) ~ label::after {
+  .form-floating > label:has(~ textarea:focus)::after,
+  .form-floating > label:has(~ textarea:not(:placeholder-shown))::after {
     position: absolute;
     inset: var(--bs-form-floating-padding-y) calc(var(--bs-form-floating-padding-x) * 0.5);
     z-index: -1;
     height: var(--bs-form-floating-label-height);
     content: "";
-    background-color: var(--bs-control-bg);
+    background-color: var(--bs-form-floating-label-bg);
     border-radius: var(--bs-btn-input-border-radius);
   }
-  .form-floating > textarea:disabled ~ label::after {
-    background-color: var(--bs-control-disabled-bg);
+  .form-floating > label:has(~ textarea:disabled)::after {
+    background-color: var(--bs-form-floating-label-disabled-bg);
   }
-  .form-floating > .form-control-plaintext ~ label {
+  .form-floating > label:has(~ .form-control-plaintext) {
     border-width: var(--bs-control-border-width) 0;
   }
-  .form-floating > :disabled ~ label,
-  .form-floating > .form-control:disabled ~ label {
+  .form-floating > label:has(~ :disabled),
+  .form-floating > label:has(~ .form-control:disabled) {
     color: var(--bs-form-floating-label-disabled-color);
   }
 }
   [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {
     display: block;
   }
-  .form-range.is-valid::-webkit-slider-thumb {
+  .form-range-input.is-valid::-webkit-slider-thumb {
     background: var(--bs-success-bg);
   }
-  .form-range.is-valid::-moz-range-thumb {
+  .form-range-input.is-valid::-moz-range-thumb {
     background: var(--bs-success-bg);
   }
-  .form-range.is-valid:focus-visible::-webkit-slider-thumb {
+  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  .form-range.is-valid:focus-visible::-moz-range-thumb {
+  .form-range-input.is-valid:focus-visible::-moz-range-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  .form-range.is-valid ~ .valid-feedback,
-  .form-range.is-valid ~ .valid-tooltip {
-    display: block;
-  }
-  [data-bs-validate~=valid] .form-range:user-valid::-webkit-slider-thumb {
+  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {
     background: var(--bs-success-bg);
   }
-  [data-bs-validate~=valid] .form-range:user-valid::-moz-range-thumb {
+  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {
     background: var(--bs-success-bg);
   }
-  [data-bs-validate~=valid] .form-range:user-valid:focus-visible::-webkit-slider-thumb {
+  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  [data-bs-validate~=valid] .form-range:user-valid:focus-visible::-moz-range-thumb {
+  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  [data-bs-validate~=valid] .form-range:user-valid ~ .valid-feedback,
-  [data-bs-validate~=valid] .form-range:user-valid ~ .valid-tooltip {
+  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,
+  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {
     display: block;
   }
   .form-field:has(.input-group .form-control.is-valid) .valid-feedback,
   [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {
     display: block;
   }
-  .form-range.is-invalid::-webkit-slider-thumb {
+  .form-range-input.is-invalid::-webkit-slider-thumb {
     background: var(--bs-danger-bg);
   }
-  .form-range.is-invalid::-moz-range-thumb {
+  .form-range-input.is-invalid::-moz-range-thumb {
     background: var(--bs-danger-bg);
   }
-  .form-range.is-invalid:focus-visible::-webkit-slider-thumb {
+  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  .form-range.is-invalid:focus-visible::-moz-range-thumb {
+  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  .form-range.is-invalid ~ .invalid-feedback,
-  .form-range.is-invalid ~ .invalid-tooltip {
-    display: block;
-  }
-  [data-bs-validate] .form-range:user-invalid::-webkit-slider-thumb {
+  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {
     background: var(--bs-danger-bg);
   }
-  [data-bs-validate] .form-range:user-invalid::-moz-range-thumb {
+  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {
     background: var(--bs-danger-bg);
   }
-  [data-bs-validate] .form-range:user-invalid:focus-visible::-webkit-slider-thumb {
+  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  [data-bs-validate] .form-range:user-invalid:focus-visible::-moz-range-thumb {
+  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {
     outline: var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);
     outline-offset: var(--bs-focus-ring-offset);
   }
-  [data-bs-validate] .form-range:user-invalid ~ .invalid-feedback,
-  [data-bs-validate] .form-range:user-invalid ~ .invalid-tooltip {
+  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,
+  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {
     display: block;
   }
   .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,
     --bs-btn-close-focus-opacity: 0.85;
     --bs-btn-close-disabled-opacity: 0.25;
     box-sizing: content-box;
-    width: var(--bs-btn-close-size);
-    height: var(--bs-btn-close-size);
+    min-width: var(--bs-btn-close-size);
+    min-height: var(--bs-btn-close-size);
     padding: 0;
     color: var(--bs-btn-close-color);
     background-color: currentcolor;
     align-items: center;
     padding: var(--bs-breadcrumb-padding-y, 0) var(--bs-breadcrumb-padding-x, 0);
     font-size: var(--bs-breadcrumb-font-size);
-    list-style: none;
+    list-style-type: "";
     background-color: var(--bs-breadcrumb-bg);
     border-radius: var(--bs-breadcrumb-border-radius);
   }
   .card-list:not(:first-child, :last-child) {
     border-block-end-width: var(--bs-card-border-width);
   }
+  .card-body:has(+ .card-footer),
+  .card-list:has(+ .card-footer) {
+    border-block-end-width: 0;
+  }
   .card-title,
   .card-subtitle,
   .card-text {
   .card-group > .card {
     margin-bottom: var(--bs-card-group-margin);
   }
-  @media (width >= 576px) {
+  @container (width >= 576px) {
     .card-group {
       display: flex;
       flex-flow: row wrap;
       margin-bottom: 0;
     }
     .card-group > .card + .card {
-      margin-inline-start: 0;
-      border-inline-start: 0;
+      margin-inline-start: calc(-1 * var(--bs-card-border-width));
     }
     .card-group > .card:not(:last-child) {
       border-start-end-radius: 0;
     font-size: var(--bs-menu-font-size);
     color: var(--bs-menu-color);
     text-align: start;
-    list-style: none;
+    list-style-type: "";
     background-color: var(--bs-menu-bg);
     background-clip: padding-box;
     border: var(--bs-menu-border-width, var(--bs-border-width)) solid var(--bs-menu-border-color, var(--bs-border-color-translucent));
     margin-inline-start: calc(-1 * var(--bs-list-group-border-width));
     border-inline-start-width: var(--bs-list-group-border-width);
   }
-  @media (width >= 576px) {
+  @container (width >= 576px) {
     .sm\:list-group-horizontal {
       flex-direction: row;
     }
       border-inline-start-width: var(--bs-list-group-border-width);
     }
   }
-  @media (width >= 768px) {
+  @container (width >= 768px) {
     .md\:list-group-horizontal {
       flex-direction: row;
     }
       border-inline-start-width: var(--bs-list-group-border-width);
     }
   }
-  @media (width >= 1024px) {
+  @container (width >= 1024px) {
     .lg\:list-group-horizontal {
       flex-direction: row;
     }
       border-inline-start-width: var(--bs-list-group-border-width);
     }
   }
-  @media (width >= 1280px) {
+  @container (width >= 1280px) {
     .xl\:list-group-horizontal {
       flex-direction: row;
     }
       border-inline-start-width: var(--bs-list-group-border-width);
     }
   }
-  @media (width >= 1536px) {
+  @container (width >= 1536px) {
     .\32 xl\:list-group-horizontal {
       flex-direction: row;
     }
     gap: var(--bs-nav-gap);
     padding-inline-start: 0;
     margin-bottom: 0;
-    list-style: none;
+    list-style-type: "";
   }
   .nav-item {
     display: flex;
     gap: var(--bs-nav-gap);
     padding-inline-start: 0;
     margin-bottom: 0;
-    list-style: none;
+    list-style-type: "";
   }
   .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {
     color: var(--bs-navbar-active-color);
     --bs-pagination-disabled-border-color: var(--bs-border-color);
     display: flex;
     padding-inline-start: 0;
-    list-style: none;
+    list-style-type: "";
   }
   .page-link {
     position: relative;
     grid-auto-flow: row;
     gap: var(--bs-stepper-gap);
     padding-inline-start: 0;
-    list-style: none;
+    list-style-type: "";
     counter-reset: stepper;
   }
   .stepper-item {
index dd690c9e43c92cb9293d3493e4adf2fc6ddf83e8..3aa10169fbd975c2070d2997c34e29152987a67f 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/_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/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.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/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.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/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.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":"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V;EmBl6EQ;IACE,wBAAA;EnBo6EV;EmBr6EQ;IACE,wBAAA;EnBu6EV;EmBx6EQ;IACE,wBAAA;EnB06EV;EmB36EQ;IACE,wBAAA;EnB66EV;EmB96EQ;IACE,wBAAA;EnBg7EV;EmBj7EQ;IACE,yBAAA;EnBm7EV;EmBp7EQ;IACE,yBAAA;EnBs7EV;EmBv7EQ;IACE,yBAAA;EnBy7EV;EmBl7EQ;IACE,oBAFS;EnBs7EnB;EmBr7EQ;IACE,oBAFS;EnBy7EnB;EmBx7EQ;IACE,oBAFS;EnB47EnB;EmB37EQ;IACE,oBAFS;EnB+7EnB;EmB97EQ;IACE,oBAFS;EnBk8EnB;EmBj8EQ;IACE,oBAFS;EnBq8EnB;EmBp8EQ;IACE,oBAFS;EnBw8EnB;EmBv8EQ;IACE,oBAFS;EnB28EnB;EmB18EQ;IACE,oBAFS;EnB88EnB;EmB78EQ;IACE,qBAFS;EnBi9EnB;EmBh9EQ;IACE,qBAFS;EnBo9EnB;EWx+EE;IQaM;MACE,wBAAA;InB89ER;ImB/9EM;MACE,wBAAA;InBi+ER;ImBl+EM;MACE,wBAAA;InBo+ER;ImBr+EM;MACE,wBAAA;InBu+ER;ImBx+EM;MACE,wBAAA;InB0+ER;ImB3+EM;MACE,wBAAA;InB6+ER;ImB9+EM;MACE,wBAAA;InBg/ER;ImBj/EM;MACE,wBAAA;InBm/ER;ImBp/EM;MACE,wBAAA;InBs/ER;ImBv/EM;MACE,yBAAA;InBy/ER;ImB1/EM;MACE,yBAAA;InB4/ER;ImB7/EM;MACE,yBAAA;InB+/ER;ImBx/EM;MACE,oBAFS;InB4/EjB;ImB3/EM;MACE,oBAFS;InB+/EjB;ImB9/EM;MACE,oBAFS;InBkgFjB;ImBjgFM;MACE,oBAFS;InBqgFjB;ImBpgFM;MACE,oBAFS;InBwgFjB;ImBvgFM;MACE,oBAFS;InB2gFjB;ImB1gFM;MACE,oBAFS;InB8gFjB;ImB7gFM;MACE,oBAFS;InBihFjB;ImBhhFM;MACE,oBAFS;InBohFjB;ImBnhFM;MACE,qBAFS;InBuhFjB;ImBthFM;MACE,qBAFS;InB0hFjB;EACF;EW/iFE;IQaM;MACE,wBAAA;InBqiFR;ImBtiFM;MACE,wBAAA;InBwiFR;ImBziFM;MACE,wBAAA;InB2iFR;ImB5iFM;MACE,wBAAA;InB8iFR;ImB/iFM;MACE,wBAAA;InBijFR;ImBljFM;MACE,wBAAA;InBojFR;ImBrjFM;MACE,wBAAA;InBujFR;ImBxjFM;MACE,wBAAA;InB0jFR;ImB3jFM;MACE,wBAAA;InB6jFR;ImB9jFM;MACE,yBAAA;InBgkFR;ImBjkFM;MACE,yBAAA;InBmkFR;ImBpkFM;MACE,yBAAA;InBskFR;ImB/jFM;MACE,oBAFS;InBmkFjB;ImBlkFM;MACE,oBAFS;InBskFjB;ImBrkFM;MACE,oBAFS;InBykFjB;ImBxkFM;MACE,oBAFS;InB4kFjB;ImB3kFM;MACE,oBAFS;InB+kFjB;ImB9kFM;MACE,oBAFS;InBklFjB;ImBjlFM;MACE,oBAFS;InBqlFjB;ImBplFM;MACE,oBAFS;InBwlFjB;ImBvlFM;MACE,oBAFS;InB2lFjB;ImB1lFM;MACE,qBAFS;InB8lFjB;ImB7lFM;MACE,qBAFS;InBimFjB;EACF;EWtnFE;IQaM;MACE,wBAAA;InB4mFR;ImB7mFM;MACE,wBAAA;InB+mFR;ImBhnFM;MACE,wBAAA;InBknFR;ImBnnFM;MACE,wBAAA;InBqnFR;ImBtnFM;MACE,wBAAA;InBwnFR;ImBznFM;MACE,wBAAA;InB2nFR;ImB5nFM;MACE,wBAAA;InB8nFR;ImB/nFM;MACE,wBAAA;InBioFR;ImBloFM;MACE,wBAAA;InBooFR;ImBroFM;MACE,yBAAA;InBuoFR;ImBxoFM;MACE,yBAAA;InB0oFR;ImB3oFM;MACE,yBAAA;InB6oFR;ImBtoFM;MACE,oBAFS;InB0oFjB;ImBzoFM;MACE,oBAFS;InB6oFjB;ImB5oFM;MACE,oBAFS;InBgpFjB;ImB/oFM;MACE,oBAFS;InBmpFjB;ImBlpFM;MACE,oBAFS;InBspFjB;ImBrpFM;MACE,oBAFS;InBypFjB;ImBxpFM;MACE,oBAFS;InB4pFjB;ImB3pFM;MACE,oBAFS;InB+pFjB;ImB9pFM;MACE,oBAFS;InBkqFjB;ImBjqFM;MACE,qBAFS;InBqqFjB;ImBpqFM;MACE,qBAFS;InBwqFjB;EACF;EW7rFE;IQaM;MACE,wBAAA;InBmrFR;ImBprFM;MACE,wBAAA;InBsrFR;ImBvrFM;MACE,wBAAA;InByrFR;ImB1rFM;MACE,wBAAA;InB4rFR;ImB7rFM;MACE,wBAAA;InB+rFR;ImBhsFM;MACE,wBAAA;InBksFR;ImBnsFM;MACE,wBAAA;InBqsFR;ImBtsFM;MACE,wBAAA;InBwsFR;ImBzsFM;MACE,wBAAA;InB2sFR;ImB5sFM;MACE,yBAAA;InB8sFR;ImB/sFM;MACE,yBAAA;InBitFR;ImBltFM;MACE,yBAAA;InBotFR;ImB7sFM;MACE,oBAFS;InBitFjB;ImBhtFM;MACE,oBAFS;InBotFjB;ImBntFM;MACE,oBAFS;InButFjB;ImBttFM;MACE,oBAFS;InB0tFjB;ImBztFM;MACE,oBAFS;InB6tFjB;ImB5tFM;MACE,oBAFS;InBguFjB;ImB/tFM;MACE,oBAFS;InBmuFjB;ImBluFM;MACE,oBAFS;InBsuFjB;ImBruFM;MACE,oBAFS;InByuFjB;ImBxuFM;MACE,qBAFS;InB4uFjB;ImB3uFM;MACE,qBAFS;InB+uFjB;EACF;EWpwFE;IQaM;MACE,wBAAA;InB0vFR;ImB3vFM;MACE,wBAAA;InB6vFR;ImB9vFM;MACE,wBAAA;InBgwFR;ImBjwFM;MACE,wBAAA;InBmwFR;ImBpwFM;MACE,wBAAA;InBswFR;ImBvwFM;MACE,wBAAA;InBywFR;ImB1wFM;MACE,wBAAA;InB4wFR;ImB7wFM;MACE,wBAAA;InB+wFR;ImBhxFM;MACE,wBAAA;InBkxFR;ImBnxFM;MACE,yBAAA;InBqxFR;ImBtxFM;MACE,yBAAA;InBwxFR;ImBzxFM;MACE,yBAAA;InB2xFR;ImBpxFM;MACE,oBAFS;InBwxFjB;ImBvxFM;MACE,oBAFS;InB2xFjB;ImB1xFM;MACE,oBAFS;InB8xFjB;ImB7xFM;MACE,oBAFS;InBiyFjB;ImBhyFM;MACE,oBAFS;InBoyFjB;ImBnyFM;MACE,oBAFS;InBuyFjB;ImBtyFM;MACE,o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DG;EnFkhTT;EmF17SE;IA5II,iBAoDG;EnFqhTT;EmF77SE;IA5II,iBAoDG;EnFwhTT;EmFh8SE;IA5II,kBAoDG;EnF2hTT;EmFn8SE;IA5II,kBAoDG;EnF8hTT;EmFt8SE;IA5II,mBAoDG;EnFiiTT;EmFz8SE;IA5II,iBAoDG;EnFoiTT;EmF58SE;IA5II,WAoDG;EnFuiTT;EmF/8SE;IA5II,mBAoDG;EnF0iTT;EmFl9SE;IA5II,iBAoDG;EnF6iTT;EmFr9SE;IA5II,gBAoDG;EnFgjTT;EmFx9SE;IA5II,sBAoDG;EnFmjTT;EmF39SE;IA5II,gBAoDG;EnFsjTT;EmF99SE;IA5II,UAoDG;EnFyjTT;EmFj+SE;IA5II,aAoDG;EnF4jTT;EmFp+SE;IA5II,YAoDG;EnF+jTT;EmFv+SE;IA5II,aAoDG;EnFkkTT;EmF1+SE;IA5II,UAoDG;EnFqkTT;EmF7+SE;IA5II,cAyDO;EnFmkTb;EmFh/SE;IA5II,gBAyDO;EnFskTb;EmFn/SE;IA5II,iBAyDO;EnFykTb;EmFt/SE;IA5II,gBAyDO;EnF4kTb;EmFz/SE;IA5II,gBAyDO;EnF+kTb;EmF5/SE;IA5II,kBAyDO;EnFklTb;EmF//SE;IA5II,mBAyDO;EnFqlTb;EmFlgTE;IA5II,kBAyDO;EnFwlTb;EmFrgTE;IA5II,gBAyDO;EnF2lTb;EmFxgTE;IA5II,kBAyDO;EnF8lTb;EmF3gTE;IA5II,mBAyDO;EnFimTb;EmF9gTE;IA5II,kBAyDO;EnFomTb;EmFjhTE;IA5II,2BAoDG;EnF4mTT;EmFphTE;IA5II,oBAoDG;EnF+mTT;EmFvhTE;IA5II,eAyDO;EnF6mTb;EmF1hTE;IA5II,qBAyDO;EnFgnTb;EmF7hTE;IA5II,cAyDO;EnFmnTb;EmFhiTE;IA5II,aAyDO;EnFsnTb;EmFniTE;IA5II,oBAyDO;EnFynTb;EmFtiTE;IA5II,cAyDO;EnF4nTb;EmFziTE;IA5II,kBAyDO;EnF+nTb;EmF5iTE;IA5II,mBAyDO;EnFkoTb;EmF/iTE;IA5II,aAyDO;EnFqoTb;EmFljTE;IA5II,oBAyDO;EnFwoTb;EmFrjTE;IA5I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DG;EnF6/TT;EmFr6TE;IA5II,aAoDG;EnFggUT;EmFx6TE;IA5II,iBAoDG;EnFmgUT;EmF36TE;IA5II,cAoDG;EnFsgUT;EmF96TE;IA5II,mBAyDO;EnFogUb;EmFj7TE;IA5II,sBAyDO;EnFugUb;EmFp7TE;IA5II,2BAyDO;EnF0gUb;EmFv7TE;IA5II,8BAyDO;EnF6gUb;EmF17TE;IA5II,YAoDG;EnFqhUT;EmF77TE;IA5II,YAoDG;EnFwhUT;EmFh8TE;IA5II,cAoDG;EnF2hUT;EmFn8TE;IA5II,cAoDG;EnF8hUT;EmFt8TE;IA5II,eAyDO;EnF4hUb;EmFz8TE;IA5II,iBAyDO;EnF+hUb;EmF58TE;IA5II,uBAyDO;EnFkiUb;EmF/8TE;IA5II,2BAoDG;EnF0iUT;EmFl9TE;IA5II,yBAoDG;EnF6iUT;EmFr9TE;IA5II,uBAoDG;EnFgjUT;EmFx9TE;IA5II,8BAoDG;EnFmjUT;EmF39TE;IA5II,6BAoDG;EnFsjUT;EmF99TE;IA5II,6BAoDG;EnFyjUT;EmFj+TE;IA5II,oBAoDG;EnF4jUT;EmFp+TE;IA5II,kBAoDG;EnF+jUT;EmFv+TE;IA5II,qBAoDG;EnFkkUT;EmF1+TE;IA5II,sBAoDG;EnFqkUT;EmF7+TE;IA5II,mBAoDG;EnFwkUT;EmFh/TE;IA5II,iBAoDG;EnF2kUT;EmFn/TE;IA5II,oBAoDG;EnF8kUT;EmFt/TE;IA5II,uBAoDG;EnFilUT;EmFz/TE;IA5II,qBAoDG;EnFolUT;EmF5/TE;IA5II,mBAoDG;EnFulUT;EmF//TE;IA5II,qBAoDG;EnF0lUT;EmFlgUE;IA5II,oBAoDG;EnF6lUT;EmFrgUE;IA5II,yBAoDG;EnFgmUT;EmFxgUE;IA5II,uBAoDG;EnFmmUT;EmF3gUE;IA5II,qBAoDG;EnFsmUT;EmF9gUE;IA5II,4BAoDG;EnFymUT;EmFjhUE;IA5II,2BAoDG;EnF4mUT;EmFphUE;IA5II,sBAoDG;EnF+mUT;EmFvhUE;IA5II,gBAoDG;EnFknUT;EmF1hUE;IA5II,sBAoDG;EnFqnUT;EmF7hUE;IA5II,oBAoDG;EnFwnUT;EmFhiUE;IA5II,kBAoDG;EnF2nUT;EmFniUE;IA5II,oBAoDG;EnF8nUT;EmFtiUE;IA5II,mBAoDG;EnFioUT;EmFziUE;IA5II,kBAoDG;EnFooUT;EmF5iUE;IA5II,gBAoDG;EnFuoUT;EmF/iUE;IA5II,mBAoDG;EnF0oUT;EmFljUE;IA5II,oBAoDG;EnF6oUT;EmFrjUE;IA5II,0BAoDG;EnFgpUT;EmFxjUE;IA5II,qCAoDG;EnFmpUT;EmF3jUE;IA5II,qCAoDG;EnFspUT;EmF9jUE;IA5II,qCAoDG;EnFypUT;EmFjkUE;IA5II,qCAoDG;EnF4pUT;EmFpkUE;IA5II,mBAoDG;EnF+pUT;EmFvkUE;IA5II,mBAyDO;EnF6pUb;EmF1kUE;IA5II,sBAyDO;EnFgqUb;EmF7kUE;IA5II,qBAyDO;EnFmqUb;EmFhlUE;IA5II,SAoDG;EnF2qUT;EmFnlUE;IA5II,QAoDG;EnF8qUT;EmFtlUE;IA5II,QAoDG;EnFirUT;EmFzlUE;IA5II,QAoDG;EnForUT;EmF5lUE;IA5II,QAoDG;EnFurUT;EmF/lUE;IA5II,QAoDG;EnF0rUT;EmFlmUE;IA5II,QAoDG;EnF6rUT;EmFrmUE;IA5II,QAoDG;EnFgsUT;EmFxmUE;IA5II,SAoDG;EnFmsUT;EmF3mUE;IA5II,eAoDG;EnFssUT;EmF9mUE;IA5II,cAoDG;EnFysUT;EmFjnUE;IA5II,eAoDG;EnF4sUT;EmFpnUE;IA5II,YAoDG;EnF+sUT;EmFvnUE;IA5II,eAoDG;EnFktUT;EmF1nUE;IA5II,cAoDG;EnFqtUT;EmF7nUE;IA5II,YAoDG;EnFwtUT;EmFhoUE;IA5II,cAoDG;EnF2tUT;EmFnoUE;IA5II,YAoDG;EnF8tUT;EmFtoUE;IA5II,YAoDG;EnFiuUT;EmFzoUE;IA5II,gBAoDG;EnFouUT;EmF5oUE;IA5II,sBAoDG;EnFuuUT;EmF/oUE;IA5II,qBAoDG;EnF0uUT;EmFlpUE;IA5II,sBAoDG;EnF6uUT;EmFrpUE;IA5II,mBAoDG;EnFgvUT;EmFxpUE;IA5II,sBAoDG;EnFmvUT;EmF3pUE;IA5II,qBAoDG;EnFsvUT;EmF9pUE;IA5II,mBAoDG;EnFyvUT;EmFjqUE;IA5II,qBAoDG;EnF4vUT;EmFpqUE;IA5II,mBAoDG;EnF+vUT;EmFvqUE;IA5II,mBAoDG;EnFkwUT;EmF1qUE;IA5II,eAoDG;EnFqwUT;EmF7qUE;IA5II,qBAoDG;EnFwwUT;EmFhrUE;IA5II,oBAoDG;EnF2wUT;EmFnrUE;IA5II,qBAoDG;EnF8wUT;EmFtrUE;IA5II,kBAoDG;EnFixUT;EmFzrUE;IA5II,qBAoDG;EnFoxUT;EmF5rUE;IA5II,oBAoDG;EnFuxUT;EmF/rUE;IA5II,kBAoDG;EnF0xUT;EmFlsUE;IA5II,oBAoDG;EnF6xUT;EmFrsUE;IA5II,kBAoDG;EnFgyUT;EmFxsUE;IA5II,kBAoDG;EnFmyUT;EmF3sUE;IA5II,qBAoDG;EnFsyUT;EmF9sUE;IA5II,2BAoDG;EnFyyUT;EmFjtUE;IA5II,0BAoDG;EnF4yUT;EmFptUE;IA5II,2BAoDG;EnF+yUT;EmFvtUE;IA5II,wBAoDG;EnFkzUT;EmF1tUE;IA5II,2BAoDG;EnFqzUT;EmF7tUE;IA5II,0BAoDG;EnFwzUT;EmFhuUE;IA5II,wBAoDG;EnF2zUT;EmFnuUE;IA5II,0BAoDG;EnF8zUT;EmFtuUE;IA5II,wBAoDG;EnFi0UT;EmFzuUE;IA5II,wBAoDG;EnFo0UT;EmF5uUE;IA5II,oBAoDG;EnFu0UT;EmF/uUE;IA5II,0BAoDG;EnF00UT;EmFlvUE;IA5II,yBAoDG;EnF60UT;EmFrvUE;IA5II,0BAoDG;EnFg1UT;EmFxvUE;IA5II,uBAoDG;EnFm1UT;EmF3vUE;IA5II,0BAoDG;EnFs1UT;EmF9vUE;IA5II,yBAoDG;EnFy1UT;EmFjwUE;IA5II,uBAoDG;EnF41UT;EmFpwUE;IA5II,yBAoDG;EnF+1UT;EmFvwUE;IA5II,uBAoDG;EnFk2UT;EmF1wUE;IA5II,2BAoDG;EnFq2UT;EmF7wUE;IA5II,0BAoDG;EnFw2UT;EmFhxUE;IA5II,uBAoDG;EnF22UT;EmFnxUE;IA5II,mBAoDG;EnF82UT;EmFtxUE;IA5II,yBAoDG;EnFi3UT;EmFzxUE;IA5II,wBAoDG;EnFo3UT;EmF5xUE;IA5II,yBAoDG;EnFu3UT;EmF/xUE;IA5II,sBAoDG;EnF03UT;EmFlyUE;IA5II,yBAoDG;EnF63UT;EmFryUE;IA5II,wBAoDG;EnFg4UT;EmFxyUE;IA5II,sBAoDG;EnFm4UT;EmF3yUE;IA5II,wBAoDG;EnFs4UT;EmF9yUE;IA5II,sBAoDG;EnFy4UT;EmFjzUE;IA5II,sBAoDG;EnF44UT;EmFpzUE;IA5II,sBAoDG;EnF+4UT;EmFvzUE;IA5II,4BAoDG;EnFk5UT;EmF1zUE;IA5II,2BAoDG;EnFq5UT;EmF7zUE;IA5II,4BAoDG;EnFw5UT;EmFh0UE;IA5II,yBAoDG;EnF25UT;EmFn0UE;IA5II,4BAoDG;EnF85UT;EmFt0UE;IA5II,2BAoDG;EnFi6UT;EmFz0UE;IA5II,yBAoDG;EnFo6UT;EmF50UE;IA5II,2BAoDG;EnFu6UT;EmF/0UE;IA5II,yBAoDG;EnF06UT;EmFl1UE;IA5II,6BAoDG;EnF66UT;EmFr1UE;IA5II,4BAoDG;EnFg7UT;EmFx1UE;IA5II,yBAoDG;EnFm7UT;EmF31UE;IA5II,UAoDG;EnFs7UT;EmF91UE;IA5II,gBAoDG;EnFy7UT;EmFj2UE;IA5II,eAoDG;EnF47UT;EmFp2UE;IA5II,gBAoDG;EnF+7UT;EmFv2UE;IA5II,aAoDG;EnFk8UT;EmF12UE;IA5II,gBAoDG;EnFq8UT;EmF72UE;IA5II,eAoDG;EnFw8UT;EmFh3UE;IA5II,aAoDG;EnF28UT;EmFn3UE;IA5II,eAoDG;EnF88UT;EmFt3UE;IA5II,aAoDG;EnFi9UT;EmFz3UE;IA5II,iBAoDG;EnFo9UT;EmF53UE;IA5II,uBAoDG;EnFu9UT;EmF/3UE;IA5II,sBAoDG;EnF09UT;EmFl4UE;IA5II,uBAoDG;EnF69UT;EmFr4UE;IA5II,oBAoDG;EnFg+UT;EmFx4UE;IA5II,uBAoDG;EnFm+UT;EmF34UE;IA5II,sBAoDG;EnFs+UT;EmF94UE;IA5II,oBAoDG;EnFy+UT;EmFj5UE;IA5II,sBAoDG;EnF4+UT;EmFp5UE;IA5II,oBAoDG;EnF++UT;EmFv5UE;IA5II,gBAoDG;EnFk/UT;EmF15UE;IA5II,sBAoDG;EnFq/UT;EmF75UE;IA5II,qBAoDG;EnFw/UT;EmFh6UE;IA5II,sBAoDG;EnF2/UT;EmFn6UE;IA5II,mBAoDG;EnF8/UT;EmFt6UE;IA5II,sBAoDG;EnFigVT;EmFz6UE;IA5II,qBAoDG;EnFogVT;EmF56UE;IA5II,mBAoDG;EnFugVT;EmF/6UE;IA5II,qBAoDG;EnF0gVT;EmFl7UE;IA5II,mBAoDG;EnF6gVT;EmFr7UE;IA5II,sBAoDG;EnFghVT;EmFx7UE;IA5II,4BAoDG;EnFmhVT;EmF37UE;IA5II,2BAoDG;EnFshVT;EmF97UE;IA5II,4BAoDG;EnFyhVT;EmFj8UE;IA5II,yBAoDG;EnF4hVT;EmFp8UE;IA5II,4BAoDG;EnF+hVT;EmFv8UE;IA5II,2BAoDG;EnFkiVT;EmF18UE;IA5II,yBAoDG;EnFqiVT;EmF78UE;IA5II,2BAoDG;EnFwiVT;EmFh9UE;IA5II,yBAoDG;EnF2iVT;EmFn9UE;IA5II,qBAoDG;EnF8iVT;EmFt9UE;IA5II,2BAoDG;EnFijVT;EmFz9UE;IA5II,0BAoDG;EnFojVT;EmF59UE;IA5II,2BAoDG;EnFujVT;EmF/9UE;IA5II,wBAoDG;EnF0jVT;EmFl+UE;IA5II,2BAoDG;EnF6jVT;EmFr+UE;IA5II,0BAoDG;EnFgkVT;EmFx+UE;IA5II,wBAoDG;EnFmkVT;EmF3+UE;IA5II,0BAoDG;EnFskVT;EmF9+UE;IA5II,wBAoDG;EnFykVT;EmFj/UE;IA5II,oBAoDG;EnF4kVT;EmFp/UE;IA5II,0BAoDG;EnF+kVT;EmFv/UE;IA5II,yBAoDG;EnFklVT;EmF1/UE;IA5II,0BAoDG;EnFqlVT;EmF7/UE;IA5II,uBAoDG;EnFwlVT;EmFhgVE;IA5II,0BAoDG;EnF2lVT;EmFngVE;IA5II,yBAoDG;EnF8lVT;EmFtgVE;IA5II,uBAoDG;EnFimVT;EmFzgVE;IA5II,yBAoDG;EnFomVT;EmF5gVE;IA5II,uBAoDG;EnFumVT;EmF/gVE;IA5II,uBAoDG;EnF0mVT;EmFlhVE;IA5II,6BAoDG;EnF6mVT;EmFrhVE;IA5II,4BAoDG;EnFgnVT;EmFxhVE;IA5II,6BAoDG;EnFmnVT;EmF3hVE;IA5II,0BAoDG;EnFsnVT;EmF9hVE;IA5II,6BAoDG;EnFynVT;EmFjiVE;IA5II,4BAoDG;EnF4nVT;EmFpiVE;IA5II,0BAoDG;EnF+nVT;EmFviVE;IA5II,4BAoDG;EnFkoVT;EmF1iVE;IA5II,0BAoDG;EnFqoVT;EmF7iVE;IA5II,MAoDG;EnFwoVT;EmFhjVE;IA5II,YAoDG;EnF2oVT;EmFnjVE;IA5II,WAoDG;EnF8oVT;EmFtjVE;IA5II,YAoDG;EnFipVT;EmFzjVE;IA5II,SAoDG;EnFopVT;EmF5jVE;IA5II,YAoDG;EnFupVT;EmF/jVE;IA5II,WAoDG;EnF0pVT;EmFlkVE;IA5II,SAoDG;EnF6pVT;EmFrkVE;IA5II,WAoDG;EnFgqVT;EmFxkVE;IA5II,SAoDG;EnFmqVT;EmF3kVE;IA5II,UAoDG;EnFsqVT;EmF9kVE;IA5II,gBAoDG;EnFyqVT;EmFjlVE;IA5II,eAoDG;EnF4qVT;EmFplVE;IA5II,gBAoDG;EnF+qVT;EmFvlVE;IA5II,aAoDG;EnFkrVT;EmF1lVE;IA5II,gBAoDG;EnFqrVT;EmF7lVE;IA5II,eAoDG;EnFwrVT;EmFhmVE;IA5II,aAoDG;EnF2rVT;EmFnmVE;IA5II,eAoDG;EnF8rVT;EmFtmVE;IA5II,aAoDG;EnFisVT;EmFzmVE;IA5II,aAoDG;EnFosVT;EmF5mVE;IA5II,mBAoDG;EnFusVT;EmF/mVE;IA5II,kBAoDG;EnF0sVT;EmFlnVE;IA5II,mBAoDG;EnF6sVT;EmFrnVE;IA5II,gBAoDG;EnFgtVT;EmFxnVE;IA5II,mBAoDG;EnFmtVT;EmF3nVE;IA5II,kBAoDG;EnFstVT;EmF9nVE;IA5II,gBAoDG;EnFytVT;EmFjoVE;IA5II,kBAoDG;EnF4tVT;EmFpoVE;IA5II,gBAoDG;EnF+tVT;EmFvoVE;IA5II,oBAoDG;EnFkuVT;EmF1oVE;IA5II,0BAoDG;EnFquVT;EmF7oVE;IA5II,yBAoDG;EnFwuVT;EmFhpVE;IA5II,0BAoDG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mF1/VE;IA5II,yDAoDG;EnFqlWT;EmF7/VE;IA5II,yDAoDG;EnFwlWT;EmFhgWE;IA5II,yDAoDG;EnF2lWT;EmFngWE;IA5II,yDAoDG;EnF8lWT;EmFtgWE;IA5II,yDAoDG;EnFimWT;EmFzgWE;IA5II,yDAoDG;EnFomWT;EmF5gWE;IA5II,mBAoDG;EnFumWT;EmF/gWE;IA5II,iEAoDG;EnF0mWT;EmFrgWM;IAzJA,iEAoDG;EnF6mWT;EmFrhWE;IA5II,iEAoDG;EnFgnWT;EmF3gWM;IAzJA,iEAoDG;EnFmnWT;EmF3hWE;IA5II,iEAoDG;EnFsnWT;EmFjhWM;IAzJA,iEAoDG;EnFynWT;EmFjiWE;IA5II,iEAoDG;EnF4nWT;EmFvhWM;IAzJA,iEAoDG;EnF+nWT;EmFviWE;IA5II,iEAoDG;EnFkoWT;EmF7hWM;IAzJA,iEAoDG;EnFqoWT;EmF7iWE;IA5II,iEAoDG;EnFwoWT;EmFniWM;IAzJA,iEAoDG;EnF2oWT;EmFnjWE;IA5II,iEAoDG;EnF8oWT;EmFziWM;IAzJA,iEAoDG;EnFipWT;EmFzjWE;IA5II,iEAoDG;EnFopWT;EmF/iWM;IAzJA,iEAoDG;EnFupWT;EmF/jWE;IA5II,iEAoDG;EnF0pWT;EmFrjWM;IAzJA,iEAoDG;EnF6pWT;EmFrkWE;IA5II,2BAoDG;EnFgqWT;EmF3jWM;IAzJA,2BAoDG;EnFmqWT;EmF3kWE;IA5II,8BAoDG;EnFsqWT;EmFjkWM;IAzJA,8BAoDG;EnFyqWT;EmFjlWE;IA5II,6BAoDG;EnF4qWT;EmFvkWM;IAzJA,6BAoDG;EnF+qWT;EmFvlWE;IA5II,8BAoDG;EnFkrWT;EmF7kWM;IAzJA,8BAoDG;EnFqrWT;EmF7lWE;IA5II,yEAoDG;EnFwrWT;EmFhmWE;IA5II,wHAoDG;EnF2rWT;EmFnmWE;IA5II,2EAoDG;EnF8rWT;EmFtmWE;IA5II,uEAoDG;EnFisWT;EmFzmWE;IA5II,6EAoDG;EnFosWT;EmF5mWE;IA5II,yEAoDG;EnFusWT;EmF/mWE;IA5II,yEAoDG;EnF0sWT;EmFlnWE;IA5II,yEAoDG;EnF6sWT;EmFrnWE;IA5I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;EnFoxXT;EmF5rXE;IA5II,gDAoDG;IApDH,8CAoDG;EnFwxXT;EmFhsXE;IA5II,mBAoDG;EnF2xXT;EmFnsXE;IA5II,kBAoDG;EnF8xXT;EmFtsXE;IA5II,WAoDG;EnFiyXT;EmFzsXE;IA5II,UAoDG;EnFoyXT;EmF5sXE;IA5II,UAoDG;EnFuyXT;EmF/sXE;IA5II,UAoDG;EnF0yXT;EmFltXE;IA5II,UAoDG;EnF6yXT;EWj0XE;IwE4GA;MA5II,mBAoDG;InFizXP;ImFztXA;MA5II,iBAoDG;InFozXP;ImF5tXA;MA5II,WAoDG;InFuzXP;ImF/tXA;MA5II,mBAoDG;InF0zXP;ImFluXA;MA5II,iBAoDG;InF6zXP;ImFruXA;MA5II,gBAoDG;InFg0XP;ImFxuXA;MA5II,sBAoDG;InFm0XP;ImF3uXA;MA5II,gBAoDG;InFs0XP;ImF9uXA;MA5II,eAyDO;InFo0XX;ImFjvXA;MA5II,qBAyDO;InFu0XX;ImFpvXA;MA5II,cAyDO;InF00XX;ImFvvXA;MA5II,aAyDO;InF60XX;ImF1vXA;MA5II,oBAyDO;InFg1XX;ImF7vXA;MA5II,cAyDO;InFm1XX;ImFhwXA;MA5II,kBAyDO;InFs1XX;ImFnwXA;MA5II,mBAyDO;InFy1XX;ImFtwXA;MA5II,aAyDO;InF41XX;ImFzwXA;MA5II,oBAyDO;InF+1XX;ImF5wXA;MA5II,iBAyDO;InFk2XX;ImF/wXA;MA5II,kBAyDO;InFq2XX;ImFlxXA;MA5II,aAyDO;InFw2XX;ImFrxXA;MA5II,cAoDG;InFg3XP;ImFxxXA;MA5II,mBAyDO;InF82XX;ImF3xXA;MA5II,sBAyDO;InFi3XX;ImF9xXA;MA5II,2BAyDO;InFo3XX;ImFjyXA;MA5II,8BAyDO;InFu3XX;ImFpyXA;MA5II,YAoDG;InF+3XP;ImFvyXA;MA5II,YAoDG;InFk4XP;ImF1yXA;MA5II,cAoDG;InFq4XP;ImF7yXA;MA5II,cAoDG;InFw4XP;ImFhzXA;MA5II,eAyDO;InFs4XX;ImFnzXA;MA5II,iBAyDO;InFy4XX;ImFtzXA;MA5II,uBAyDO;InF44XX;ImFzzXA;MA5II,2BAoDG;InFo5XP;ImF5zXA;MA5II,yBAoDG;InFu5XP;ImF/zXA;MA5II,uBAoDG;InF05XP;ImFl0XA;MA5II,8BAoDG;InF65XP;ImFr0XA;MA5II,6BAoDG;InFg6XP;ImFx0XA;MA5II,6BAoDG;InFm6XP;ImF30XA;MA5II,oBAoDG;InFs6XP;ImF90XA;MA5II,kBAoDG;InFy6XP;ImFj1XA;MA5II,qBAoDG;InF46XP;ImFp1XA;MA5II,sBAoDG;InF+6XP;ImFv1XA;MA5II,mBAoDG;InFk7XP;ImF11XA;MA5II,iBAoDG;InFq7XP;ImF71XA;MA5II,oBAoDG;InFw7XP;ImFh2XA;MA5II,uBAoDG;InF27XP;ImFn2XA;MA5II,qBAoDG;InF87XP;ImFt2XA;MA5II,mBAoDG;InFi8XP;ImFz2XA;MA5II,qBAoDG;InFo8XP;ImF52XA;MA5II,oBAoDG;InFu8XP;ImF/2XA;MA5II,yBAoDG;InF08XP;ImFl3XA;MA5II,uBAoDG;InF68XP;ImFr3XA;MA5II,qBAoDG;InFg9XP;ImFx3XA;MA5II,4BAoDG;InFm9XP;ImF33XA;MA5II,2BAoDG;InFs9XP;ImF93XA;MA5II,sBAoDG;InFy9XP;ImFj4XA;MA5II,gBAoDG;InF49XP;ImFp4XA;MA5II,sBAoDG;InF+9XP;ImFv4XA;MA5II,oBAoDG;InFk+XP;ImF14XA;MA5II,kBAoDG;InFq+XP;ImF74XA;MA5II,oBAoDG;InFw+XP;ImFh5XA;MA5II,mBAoDG;InF2+XP;ImFn5XA;MA5II,kBAoDG;InF8+XP;ImFt5XA;MA5II,gBAoDG;InFi/XP;ImFz5XA;MA5II,mBAoDG;InFo/XP;ImF55XA;MA5II,oBAoDG;InFu/XP;ImF/5XA;MA5II,0BAoDG;InF0/XP;ImFl6XA;MA5II,qCAoDG;InF6/XP;ImFr6XA;MA5II,qCAoDG;InFggYP;ImFx6XA;MA5II,qCAoDG;InFmgYP;ImF36XA;MA5II,qCAoDG;InFsgYP;ImF96XA;MA5II,mBAoDG;InFygYP;ImFj7XA;MA5II,mBAyDO;InFugYX;ImFp7XA;MA5II,sBAyDO;InF0gYX;ImFv7XA;MA5II,qBAyDO;InF6gYX;ImF17XA;MA5II,SAoDG;InFqhYP;ImF77XA;MA5II,QAoDG;InFwhYP;ImFh8XA;MA5II,QAoDG;InF2hYP;ImFn8XA;MA5II,QAoDG;InF8hYP;ImFt8XA;MA5II,QAoDG;InFiiYP;ImFz8XA;MA5II,QAoDG;InFoiYP;ImF58XA;MA5II,QAoDG;InFuiYP;ImF/8XA;MA5II,QAoDG;InF0iYP;ImFl9XA;MA5II,SAoDG;InF6iYP;ImFr9XA;MA5II,eAoDG;InFgjYP;ImFx9XA;MA5II,cAoDG;InFmjYP;ImF39XA;MA5II,eAoDG;InFsjYP;ImF99XA;MA5II,YAoDG;InFyjYP;ImFj+XA;MA5II,eAoDG;InF4jYP;ImFp+XA;MA5II,cAoDG;InF+jYP;ImFv+XA;MA5II,YAoDG;InFkkYP;ImF1+XA;MA5II,cAoDG;InFqkYP;ImF7+XA;MA5II,YAoDG;InFwkYP;ImFh/XA;MA5II,YAoDG;InF2kYP;ImFn/XA;MA5II,gBAoDG;InF8kYP;ImFt/XA;MA5II,sBAoDG;InFilYP;ImFz/XA;MA5II,qBAoDG;InFolYP;ImF5/XA;MA5II,sBAoDG;InFulYP;ImF//XA;MA5II,mBAoDG;InF0lYP;ImFlgYA;MA5II,sBAoDG;InF6lYP;ImFrgYA;MA5II,qBAoDG;InFgmYP;ImFxgYA;MA5II,mBAoDG;InFmmYP;ImF3gYA;MA5II,qBAoDG;InFsmYP;ImF9gYA;MA5II,mBAoDG;InFymYP;ImFjhYA;MA5II,mBAoDG;InF4mYP;ImFphYA;MA5II,eAoDG;InF+mYP;ImFvhYA;MA5II,qBAoDG;InFknYP;ImF1hYA;MA5II,oBAoDG;InFqnYP;ImF7hYA;MA5II,qBAoDG;InFwnYP;ImFhiYA;MA5II,kBAoDG;InF2nYP;ImFniYA;MA5II,qBAoDG;InF8nYP;ImFtiYA;MA5II,oBAoDG;InFioYP;ImFziYA;MA5II,kBAoDG;InFooYP;ImF5iYA;MA5II,oBAoDG;InFuoYP;ImF/iYA;MA5II,kBAoDG;InF0oYP;ImFljYA;MA5II,kBAoDG;InF6oYP;ImFrjYA;MA5II,qBAoDG;InFgpYP;ImFxjYA;MA5II,2BAoDG;InFmpYP;ImF3jYA;MA5II,0BAoDG;InFspYP;ImF9jYA;MA5II,2BAoDG;InFypYP;ImFjkYA;MA5II,wBAoDG;InF4pYP;ImFpkYA;MA5II,2BAoDG;InF+pYP;ImFvkYA;MA5II,0BAoDG;InFkqYP;ImF1kYA;MA5II,wBAoDG;InFqqYP;ImF7kYA;MA5II,0BAoDG;InFwqYP;ImFhlYA;MA5II,wBAoDG;InF2qYP;ImFnlYA;MA5II,wBAoDG;InF8qYP;ImFtlYA;MA5II,oBAoDG;InFirYP;ImFzlYA;MA5II,0BAoDG;InForYP;ImF5lYA;MA5II,yBAoDG;InFurYP;ImF/lYA;MA5II,0BAoDG;InF0rYP;ImFlmYA;MA5II,uBAoDG;InF6rYP;ImFrmYA;MA5II,0BAoDG;InFgsYP;ImFxmYA;MA5II,yBAoDG;InFmsYP;ImF3mYA;MA5II,uBAoDG;InFssYP;ImF9mYA;MA5II,yBAoDG;InFysYP;ImFjnYA;MA5II,uBAoDG;InF4sYP;ImFpnYA;MA5II,2BAoDG;InF+sYP;ImFvnYA;MA5II,0BAoDG;InFktYP;ImF1nYA;MA5II,uBAoDG;InFqtYP;ImF7nYA;MA5II,mBAoDG;InFwtYP;ImFhoYA;MA5II,yBAoDG;InF2tYP;ImFnoYA;MA5II,wBAoDG;InF8tYP;ImFtoYA;MA5II,yBAoDG;InFiuYP;ImFzoYA;MA5II,sBAoDG;InFouYP;ImF5oYA;MA5II,yBAoDG;InFuuYP;ImF/oYA;MA5II,wBAoDG;InF0uYP;ImFlpYA;MA5II,sBAoDG;InF6uYP;ImFrpYA;MA5II,wBAoDG;InFgvYP;ImFxpYA;MA5II,sBAoDG;InFmvYP;ImF3pYA;MA5II,sBAoDG;InFsvYP;ImF9pYA;MA5II,sBAoDG;InFyvYP;ImFjqYA;MA5II,4BAoDG;InF4vYP;ImFpqYA;MA5II,2BAoDG;InF+vYP;ImFvqYA;MA5II,4BAoDG;InFkwYP;ImF1qYA;MA5II,yBAoDG;InFqwYP;ImF7qYA;MA5II,4BAoDG;InFwwYP;ImFhrYA;MA5II,2BAoDG;InF2wYP;ImFnrYA;MA5II,yBAoDG;InF8wYP;ImFtrYA;MA5II,2BAoDG;InFixYP;ImFzrYA;MA5II,yBAoDG;InFoxYP;ImF5rYA;MA5II,6BAoDG;InFuxYP;ImF/rYA;MA5II,4BAoDG;InF0xYP;ImFlsYA;MA5II,yBAoDG;InF6xYP;ImFrsYA;MA5II,UAoDG;InFgyYP;ImFxsYA;MA5II,gBAoDG;InFmyYP;ImF3sYA;MA5II,eAoDG;InFsyYP;ImF9sYA;MA5II,gBAoDG;InFyyYP;ImFjtYA;MA5II,aAoDG;InF4yYP;ImFptYA;MA5II,gBAoDG;InF+yYP;ImFvtYA;MA5II,eAoDG;InFkzYP;ImF1tYA;MA5II,aAoDG;InFqzYP;ImF7tYA;MA5II,eAoDG;InFwzYP;ImFhuYA;MA5II,aAoDG;InF2zYP;ImFnuYA;MA5II,iBAoDG;InF8zYP;ImFtuYA;MA5II,uBAoDG;InFi0YP;ImFzuYA;MA5II,sBAoDG;InFo0YP;ImF5uYA;MA5II,uBAoDG;InFu0YP;ImF/uYA;MA5II,oBAoDG;InF00YP;ImFlvYA;MA5II,uBAoDG;InF60YP;ImFrvYA;MA5II,sBAoDG;InFg1YP;ImFxvYA;MA5II,oBAoDG;InFm1YP;ImF3vYA;MA5II,sBAoDG;InFs1YP;ImF9vYA;MA5II,oBAoDG;InFy1YP;ImFjwYA;MA5II,gBAoDG;InF41YP;ImFpwYA;MA5II,sBAoDG;InF+1YP;ImFvwYA;MA5II,qBAoDG;InFk2YP;ImF1wYA;MA5II,sBAoDG;InFq2YP;ImF7wYA;MA5II,mBAoDG;InFw2YP;ImFhxYA;MA5II,sBAoDG;InF22YP;ImFnxYA;MA5II,qBAoDG;InF82YP;ImFtxYA;MA5II,mBAoDG;InFi3YP;ImFzxYA;MA5II,qBAoDG;InFo3YP;ImF5xYA;MA5II,mBAoDG;InFu3YP;ImF/xYA;MA5II,sBAoDG;InF03YP;ImFlyYA;MA5II,4BAoDG;InF63YP;ImFryYA;MA5II,2BAoDG;InFg4YP;ImFxyYA;MA5II,4BAoDG;InFm4YP;ImF3yYA;MA5II,yBAoDG;InFs4YP;ImF9yYA;MA5II,4BAoDG;InFy4YP;ImFjzYA;MA5II,2BAoDG;InF44YP;ImFpzYA;MA5II,yBAoDG;InF+4YP;ImFvzYA;MA5II,2BAoDG;InFk5YP;ImF1zYA;MA5II,yBAoDG;InFq5YP;ImF7zYA;MA5II,qBAoDG;InFw5YP;ImFh0YA;MA5II,2BAoDG;InF25YP;ImFn0YA;MA5II,0BAoDG;InF85YP;ImFt0YA;MA5II,2BAoDG;InFi6YP;ImFz0YA;MA5II,wBAoDG;InFo6YP;ImF50YA;MA5II,2BAoDG;InFu6YP;ImF/0YA;MA5II,0BAoDG;InF06YP;ImFl1YA;MA5II,wBAoDG;InF66YP;ImFr1YA;MA5II,0BAoDG;InFg7YP;ImFx1YA;MA5II,wBAoDG;InFm7YP;ImF31YA;MA5II,oBAoDG;InFs7YP;ImF91YA;MA5II,0BAoDG;InFy7YP;ImFj2YA;MA5II,yBAoDG;InF47YP;ImFp2YA;MA5II,0BAoDG;InF+7YP;ImFv2YA;MA5II,uBAoDG;InFk8YP;ImF12YA;MA5II,0BAoDG;InFq8YP;ImF72YA;MA5II,yBAoDG;InFw8YP;ImFh3YA;MA5II,uBAoDG;InF28YP;ImFn3YA;MA5II,yBAoDG;InF88YP;ImFt3YA;MA5II,uBAoDG;InFi9YP;ImFz3YA;MA5II,uBAoDG;InFo9YP;ImF53YA;MA5II,6BAoDG;InFu9YP;ImF/3YA;MA5II,4BAoDG;InF09YP;ImFl4YA;MA5II,6BAoDG;InF69YP;ImFr4YA;MA5II,0BAoDG;InFg+YP;ImFx4YA;MA5II,6BAoDG;InFm+YP;ImF34YA;MA5II,4BAoDG;InFs+YP;ImF94YA;MA5II,0BAoDG;InFy+YP;ImFj5YA;MA5II,4BAoDG;InF4+YP;ImFp5YA;MA5II,0BAoDG;InF++YP;ImFv5YA;MA5II,MAoDG;InFk/YP;ImF15YA;MA5II,YAoDG;InFq/YP;ImF75YA;MA5II,WAoDG;InFw/YP;ImFh6YA;MA5II,YAoDG;InF2/YP;ImFn6YA;MA5II,SAoDG;InF8/YP;ImFt6YA;MA5II,YAoDG;InFigZP;ImFz6YA;MA5II,WAoDG;InFogZP;ImF56YA;MA5II,SAoDG;InFugZP;ImF/6YA;MA5II,WAoDG;InF0gZP;ImFl7YA;MA5II,SAoDG;InF6gZP;ImFr7YA;MA5II,UAoDG;InFghZP;ImFx7YA;MA5II,gBAoDG;InFmhZP;ImF37YA;MA5II,eAoDG;InFshZP;ImF97YA;MA5II,gBAoDG;InFyhZP;ImFj8YA;MA5II,aAoDG;InF4hZP;ImFp8YA;MA5II,gBAoDG;InF+hZP;ImFv8YA;MA5II,eAoDG;InFkiZP;ImF18YA;MA5II,aAoDG;InFqiZP;ImF78YA;MA5II,eAoDG;InFwiZP;ImFh9YA;MA5II,aAoDG;InF2iZP;ImFn9YA;MA5II,aAoDG;InF8iZP;ImFt9YA;MA5II,mBAoDG;InFijZP;ImFz9YA;MA5II,kBAoDG;InFojZP;ImF59YA;MA5II,mBAoDG;InFujZP;ImF/9YA;MA5II,gBAoDG;InF0jZP;ImFl+YA;MA5II,mBAoDG;InF6jZP;ImFr+YA;MA5II,kBAoDG;InFgkZP;ImFx+YA;MA5II,gBAoDG;InFmkZP;ImF3+YA;MA5II,kBAoDG;InFskZP;ImF9+YA;MA5II,gBAoDG;InFykZP;ImFj/YA;MA5II,oBAoDG;InF4kZP;ImFp/YA;MA5II,0BAoDG;InF+kZP;ImFv/YA;MA5II,yBAoDG;InFklZP;ImF1/YA;MA5II,0BAoDG;InFqlZP;ImF7/YA;MA5II,uBAoDG;InFwlZP;ImFhgZA;MA5II,0BAoDG;InF2lZP;ImFngZA;MA5II,yBAoDG;InF8lZP;ImFtgZA;MA5II,uBAoDG;InFimZP;ImFzgZA;MA5II,yBAoDG;InFomZP;ImF5gZA;MA5II,uBAoDG;InFumZP;ImF/gZA;MA5II,mBAoDG;InF0mZP;ImFlhZA;MA5II,yBAoDG;InF6mZP;ImFrhZA;MA5II,wBAoDG;InFgnZP;ImFxhZA;MA5II,yBAoDG;InFmnZP;ImF3hZA;MA5II,sBAoDG;InFsnZP;ImF9hZA;MA5II,yBAoDG;InFynZP;ImFjiZA;MA5II,wBAoDG;InF4nZP;ImFpiZA;MA5II,sBAoDG;InF+nZP;ImFviZA;MA5II,wBAoDG;InFkoZP;ImF1iZA;MA5II,sBAoDG;InFqoZP;ImF7iZA;MA5II,yFAoDG;InFwoZP;ImFhjZA;MA5II,sBAoDG;InF2oZP;ImFnjZA;MA5II,wFAoDG;InF8oZP;ImFtjZA;MA5II,qBAoDG;InFipZP;ImFzjZA;MA5II,iBAoDG;InFopZP;ImF5jZA;MA5II,eAoDG;InFupZP;ImF/jZA;MA5II,kBAoDG;InF0pZP;EACF;EW/qZE;IwE4GA;MA5II,mBAoDG;InF+pZP;ImFvkZA;MA5II,iBAoDG;InFkqZP;ImF1kZA;MA5II,WAoDG;InFqqZP;ImF7kZA;MA5II,mBAoDG;InFwqZP;ImFhlZA;MA5II,iBAoDG;InF2qZP;ImFnlZA;MA5II,gBAoDG;InF8qZP;ImFtlZA;MA5II,sBAoDG;InFirZP;ImFzlZA;MA5II,gBAoDG;InForZP;ImF5lZA;MA5II,eAyDO;InFkrZX;ImF/lZA;MA5II,qBAyDO;InFqrZX;ImFlmZA;MA5II,cAyDO;InFwrZX;ImFrmZA;MA5II,aAyDO;InF2rZX;ImFxmZA;MA5II,oBAyDO;InF8rZX;ImF3mZA;MA5II,cAyDO;InFisZX;ImF9mZA;MA5II,kBAyDO;InFosZX;ImFjnZA;MA5II,mBAyDO;InFusZX;ImFpnZA;MA5II,aAyDO;InF0sZX;ImFvnZA;MA5II,oBAyDO;InF6sZX;ImF1nZA;MA5II,iBAyDO;InFgtZX;ImF7nZA;MA5II,kBAyDO;InFmtZX;ImFhoZA;MA5II,aAyDO;InFstZX;ImFnoZA;MA5II,cAoDG;InF8tZP;ImFtoZA;MA5II,mBAyDO;InF4tZX;ImFzoZA;MA5II,sBAyDO;InF+tZX;ImF5oZA;MA5II,2BAyDO;InFkuZX;ImF/oZA;MA5II,8BAyDO;InFquZX;ImFlpZA;MA5II,YAoDG;InF6uZP;ImFrpZA;MA5II,YAoDG;InFgvZP;ImFxpZA;MA5II,cAoDG;InFmvZP;ImF3pZA;MA5II,cAoDG;InFsvZP;ImF9pZA;MA5II,eAyDO;InFovZX;ImFjqZA;MA5II,iBAyDO;InFuvZX;ImFpqZA;MA5II,uBAyDO;InF0vZX;ImFvqZA;MA5II,2BAoDG;InFkwZP;ImF1qZA;MA5II,yBAoDG;InFqwZP;ImF7qZA;MA5II,uBAoDG;InFwwZP;ImFhrZA;MA5II,8BAoDG;InF2wZP;ImFnrZA;MA5II,6BAoDG;InF8wZP;ImFtrZA;MA5II,6BAoDG;InFixZP;ImFzrZA;MA5II,oBAoDG;InFoxZP;ImF5rZA;MA5II,kBAoDG;InFuxZP;ImF/rZA;MA5II,qBAoDG;InF0xZP;ImFlsZA;MA5II,sBAoDG;InF6xZP;ImFrsZA;MA5II,mBAoDG;InFgyZP;ImFxsZA;MA5II,iBAoDG;InFmyZP;ImF3sZA;MA5II,oBAoDG;InFsyZP;ImF9sZA;MA5II,uBAoDG;InFyyZP;ImFjtZA;MA5II,qBAoDG;InF4yZP;ImFptZA;MA5II,mBAoDG;InF+yZP;ImFvtZA;MA5II,qBAoDG;InFkzZP;ImF1tZA;MA5II,oBAoDG;InFqzZP;ImF7tZA;MA5II,yBAoDG;InFwzZP;ImFhuZA;MA5II,uBAoDG;InF2zZP;ImFnuZA;MA5II,qBAoDG;InF8zZP;ImFtuZA;MA5II,4BAoDG;InFi0ZP;ImFzuZA;MA5II,2BAoDG;InFo0ZP;ImF5uZA;MA5II,sBAoDG;InFu0ZP;ImF/uZA;MA5II,gBAoDG;InF00ZP;ImFlvZA;MA5II,sBAoDG;InF60ZP;ImFrvZA;MA5II,oBAoDG;InFg1ZP;ImFxvZA;MA5II,kBAoDG;InFm1ZP;ImF3vZA;MA5II,oBAoDG;InFs1ZP;ImF9vZA;MA5II,mBAoDG;InFy1ZP;ImFjwZA;MA5II,kBAoDG;InF41ZP;ImFpwZA;MA5II,gBAoDG;InF+1ZP;ImFvwZA;MA5II,mBAoDG;InFk2ZP;ImF1wZA;MA5II,oBAoDG;InFq2ZP;ImF7wZA;MA5II,0BAoDG;InFw2ZP;ImFhxZA;MA5II,qCAoDG;InF22ZP;ImFnxZA;MA5II,qCAoDG;InF82ZP;ImFtxZA;MA5II,qCAoDG;InFi3ZP;ImFzxZA;MA5II,qCAoDG;InFo3ZP;ImF5xZA;MA5II,mBAoDG;InFu3ZP;ImF/xZA;MA5II,mBAyDO;InFq3ZX;ImFlyZA;MA5II,sBAyDO;InFw3ZX;ImFryZA;MA5II,qBAyDO;InF23ZX;ImFxyZA;MA5II,SAoDG;InFm4ZP;ImF3yZA;MA5II,QAoDG;InFs4ZP;ImF9yZA;MA5II,QAoDG;InFy4ZP;ImFjzZA;MA5II,QAoDG;InF44ZP;ImFpzZA;MA5II,QAoDG;InF+4ZP;ImFvzZA;MA5II,QAoDG;InFk5ZP;ImF1zZA;MA5II,QAoDG;InFq5ZP;ImF7zZA;MA5II,QAoDG;InFw5ZP;ImFh0ZA;MA5II,SAoDG;InF25ZP;ImFn0ZA;MA5II,eAoDG;InF85ZP;ImFt0ZA;MA5II,cAoDG;InFi6ZP;ImFz0ZA;MA5II,eAoDG;InFo6ZP;ImF50ZA;MA5II,YAoDG;InFu6ZP;ImF/0ZA;MA5II,eAoDG;InF06ZP;ImFl1ZA;MA5II,cAoDG;InF66ZP;ImFr1ZA;MA5II,YAoDG;InFg7ZP;ImFx1ZA;MA5II,cAoDG;InFm7ZP;ImF31ZA;MA5II,YAoDG;InFs7ZP;ImF91ZA;MA5II,YAoDG;InFy7ZP;ImFj2ZA;MA5II,gBAoDG;InF47ZP;ImFp2ZA;MA5II,sBAoDG;InF+7ZP;ImFv2ZA;MA5II,qBAoDG;InFk8ZP;ImF12ZA;MA5II,sBAoDG;InFq8ZP;ImF72ZA;MA5II,mBAoDG;InFw8ZP;ImFh3ZA;MA5II,sBAoDG;InF28ZP;ImFn3ZA;MA5II,qBAoDG;InF88ZP;ImFt3ZA;MA5II,mBAoDG;InFi9ZP;ImFz3ZA;MA5II,qBAoDG;InFo9ZP;ImF53ZA;MA5II,mBAoDG;InFu9ZP;ImF/3ZA;MA5II,mBAoDG;InF09ZP;ImFl4ZA;MA5II,eAoDG;InF69ZP;ImFr4ZA;MA5II,qBAoDG;InFg+ZP;ImFx4ZA;MA5II,oBAoDG;InFm+ZP;ImF34ZA;MA5II,qBAoDG;InFs+ZP;ImF94ZA;MA5II,kBAoDG;InFy+ZP;ImFj5ZA;MA5II,qBAoDG;InF4+ZP;ImFp5ZA;MA5II,oBAoDG;InF++ZP;ImFv5ZA;MA5II,kBAoDG;InFk/ZP;ImF15ZA;MA5II,oBAoDG;InFq/ZP;ImF75ZA;MA5II,kBAoDG;InFw/ZP;ImFh6ZA;MA5II,kBAoDG;InF2/ZP;ImFn6ZA;MA5II,qBAoDG;InF8/ZP;ImFt6ZA;MA5II,2BAoDG;InFigaP;ImFz6ZA;MA5II,0BAoDG;InFogaP;ImF56ZA;MA5II,2BAoDG;InFugaP;ImF/6ZA;MA5II,wBAoDG;InF0gaP;ImFl7ZA;MA5II,2BAoDG;InF6gaP;ImFr7ZA;MA5II,0BAoDG;InFghaP;ImFx7ZA;MA5II,wBAoDG;InFmhaP;ImF37ZA;MA5II,0BAoDG;InFshaP;ImF97ZA;MA5II,wBAoDG;InFyhaP;ImFj8ZA;MA5II,wBAoDG;InF4haP;ImFp8ZA;MA5II,oBAoDG;InF+haP;ImFv8ZA;MA5II,0BAoDG;InFkiaP;ImF18ZA;MA5II,yBAoDG;InFqiaP;ImF78ZA;MA5II,0BAoDG;InFwiaP;ImFh9ZA;MA5II,uBAoDG;InF2iaP;ImFn9ZA;MA5II,0BAoDG;InF8iaP;ImFt9ZA;MA5II,yBAoDG;InFijaP;ImFz9ZA;MA5II,uBAoDG;InFojaP;ImF59ZA;MA5II,yBAoDG;InFujaP;ImF/9ZA;MA5II,uBAoDG;InF0jaP;ImFl+ZA;MA5II,2BAoDG;InF6jaP;ImFr+ZA;MA5II,0BAoDG;InFgkaP;ImFx+ZA;MA5II,uBAoDG;InFmkaP;ImF3+ZA;MA5II,mBAoDG;InFskaP;ImF9+ZA;MA5II,yBAoDG;InFykaP;ImFj/ZA;MA5II,wBAoDG;InF4kaP;ImFp/ZA;MA5II,yBAoDG;InF+kaP;ImFv/ZA;MA5II,sBAoDG;InFklaP;ImF1/ZA;MA5II,yBAoDG;InFqlaP;ImF7/ZA;MA5II,wBAoDG;InFwlaP;ImFhgaA;MA5II,sBAoDG;InF2laP;ImFngaA;MA5II,wBAoDG;InF8laP;ImFtgaA;MA5II,sBAoDG;InFimaP;ImFzgaA;MA5II,sBAoDG;InFomaP;ImF5gaA;MA5II,sBAoDG;InFumaP;ImF/gaA;MA5II,4BAoDG;InF0maP;ImFlhaA;MA5II,2BAoDG;InF6maP;ImFrhaA;MA5II,4BAoDG;InFgnaP;ImFxhaA;MA5II,yBAoDG;InFmnaP;ImF3haA;MA5II,4BAoDG;InFsnaP;ImF9haA;MA5II,2BAoDG;InFynaP;ImFjiaA;MA5II,yBAoDG;InF4naP;ImFpiaA;MA5II,2BAoDG;InF+naP;ImFviaA;MA5II,yBAoDG;InFkoaP;ImF1iaA;MA5II,6BAoDG;InFqoaP;ImF7iaA;MA5II,4BAoDG;InFwoaP;ImFhjaA;MA5II,yBAoDG;InF2oaP;ImFnjaA;MA5II,UAoDG;InF8oaP;ImFtjaA;MA5II,gBAoDG;InFipaP;ImFzjaA;MA5II,eAoDG;InFopaP;ImF5jaA;MA5II,gBAoDG;InFupaP;ImF/jaA;MA5II,aAoDG;InF0paP;ImFlkaA;MA5II,gBAoDG;InF6paP;ImFrkaA;MA5II,eAoDG;InFgqaP;ImFxkaA;MA5II,aAoDG;InFmqaP;ImF3kaA;MA5II,eAoDG;InFsqaP;ImF9kaA;MA5II,aAoDG;InFyqaP;ImFjlaA;MA5II,iBAoDG;InF4qaP;ImFplaA;MA5II,uBAoDG;InF+qaP;ImFvlaA;MA5II,sBAoDG;InFkraP;ImF1laA;MA5II,uBAoDG;InFqraP;ImF7laA;MA5II,oBAoDG;InFwraP;ImFhmaA;MA5II,uBAoDG;InF2raP;ImFnmaA;MA5II,sBAoDG;InF8raP;ImFtmaA;MA5II,oBAoDG;InFisaP;ImFzmaA;MA5II,sBAoDG;InFosaP;ImF5maA;MA5II,oBAoDG;InFusaP;ImF/maA;MA5II,gBAoDG;InF0saP;ImFlnaA;MA5II,sBAoDG;InF6saP;ImFrnaA;MA5II,qBAoDG;InFgtaP;ImFxnaA;MA5II,sBAoDG;InFmtaP;ImF3naA;MA5II,mBAoDG;InFstaP;ImF9naA;MA5II,sBAoDG;InFytaP;ImFjoaA;MA5II,qBAoDG;InF4taP;ImFpoaA;MA5II,mBAoDG;InF+taP;ImFvoaA;MA5II,qBAoDG;InFkuaP;ImF1oaA;MA5II,mBAoDG;InFquaP;ImF7oaA;MA5II,sBAoDG;InFwuaP;ImFhpaA;MA5II,4BAoDG;InF2uaP;ImFnpaA;MA5II,2BAoDG;InF8uaP;ImFtpaA;MA5II,4BAoDG;InFivaP;ImFzpaA;MA5II,yBAoDG;InFovaP;ImF5paA;MA5II,4BAoDG;InFuvaP;ImF/paA;MA5II,2BAoDG;InF0vaP;ImFlqaA;MA5II,yBAoDG;InF6vaP;ImFrqaA;MA5II,2BAoDG;InFgwaP;ImFxqaA;MA5II,yBAoDG;InFmwaP;ImF3qaA;MA5II,qBAoDG;InFswaP;ImF9qaA;MA5II,2BAoDG;InFywaP;ImFjraA;MA5II,0BAoDG;InF4waP;ImFpraA;MA5II,2BAoDG;InF+waP;ImFvraA;MA5II,wBAoDG;InFkxaP;ImF1raA;MA5II,2BAoDG;InFqxaP;ImF7raA;MA5II,0BAoDG;InFwxaP;ImFhsaA;MA5II,wBAoDG;InF2xaP;ImFnsaA;MA5II,0BAoDG;InF8xaP;ImFtsaA;MA5II,wBAoDG;InFiyaP;ImFzsaA;MA5II,oBAoDG;InFoyaP;ImF5saA;MA5II,0BAoDG;InFuyaP;ImF/saA;MA5II,yBAoDG;InF0yaP;ImFltaA;MA5II,0BAoDG;InF6yaP;ImFrtaA;MA5II,uBAoDG;InFgzaP;ImFxtaA;MA5II,0BAoDG;InFmzaP;ImF3taA;MA5II,yBAoDG;InFszaP;ImF9taA;MA5II,uBAoDG;InFyzaP;ImFjuaA;MA5II,yBAoDG;InF4zaP;ImFpuaA;MA5II,uBAoDG;InF+zaP;ImFvuaA;MA5II,uBAoDG;InFk0aP;ImF1uaA;MA5II,6BAoDG;InFq0aP;ImF7uaA;MA5II,4BAoDG;InFw0aP;ImFhvaA;MA5II,6BAoDG;InF20aP;ImFnvaA;MA5II,0BAoDG;InF80aP;ImFtvaA;MA5II,6BAoDG;InFi1aP;ImFzvaA;MA5II,4BAoDG;InFo1aP;ImF5vaA;MA5II,0BAoDG;InFu1aP;ImF/vaA;MA5II,4BAoDG;InF01aP;ImFlwaA;MA5II,0BAoDG;InF61aP;ImFrwaA;MA5II,MAoDG;InFg2aP;ImFxwaA;MA5II,YAoDG;InFm2aP;ImF3waA;MA5II,WAoDG;InFs2aP;ImF9waA;MA5II,YAoDG;InFy2aP;ImFjxaA;MA5II,SAoDG;InF42aP;ImFpxaA;MA5II,YAoDG;InF+2aP;ImFvxaA;MA5II,WAoDG;InFk3aP;ImF1xaA;MA5II,SAoDG;InFq3aP;ImF7xaA;MA5II,WAoDG;InFw3aP;ImFhyaA;MA5II,SAoDG;InF23aP;ImFnyaA;MA5II,UAoDG;InF83aP;ImFtyaA;MA5II,gBAoDG;InFi4aP;ImFzyaA;MA5II,eAoDG;InFo4aP;ImF5yaA;MA5II,gBAoDG;InFu4aP;ImF/yaA;MA5II,aAoDG;InF04aP;ImFlzaA;MA5II,gBAoDG;InF64aP;ImFrzaA;MA5II,eAoDG;InFg5aP;ImFxzaA;MA5II,aAoDG;InFm5aP;ImF3zaA;MA5II,eAoDG;InFs5aP;ImF9zaA;MA5II,aAoDG;InFy5aP;ImFj0aA;MA5II,aAoDG;InF45aP;ImFp0aA;MA5II,mBAoDG;InF+5aP;ImFv0aA;MA5II,kBAoDG;InFk6aP;ImF10aA;MA5II,mBAoDG;InFq6aP;ImF70aA;MA5II,gBAoDG;InFw6aP;ImFh1aA;MA5II,mBAoDG;InF26aP;ImFn1aA;MA5II,kBAoDG;InF86aP;ImFt1aA;MA5II,gBAoDG;InFi7aP;ImFz1aA;MA5II,kBAoDG;InFo7aP;ImF51aA;MA5II,gBAoDG;InFu7aP;ImF/1aA;MA5II,oBAoDG;InF07aP;ImFl2aA;MA5II,0BAoDG;InF67aP;ImFr2aA;MA5II,yBAoDG;InFg8aP;ImFx2aA;MA5II,0BAoDG;InFm8aP;ImF32aA;MA5II,uBAoDG;InFs8aP;ImF92aA;MA5II,0BAoDG;InFy8aP;ImFj3aA;MA5II,yBAoDG;InF48aP;ImFp3aA;MA5II,uBAoDG;InF+8aP;ImFv3aA;MA5II,yBAoDG;InFk9aP;ImF13aA;MA5II,uBAoDG;InFq9aP;ImF73aA;MA5II,mBAoDG;InFw9aP;ImFh4aA;MA5II,yBAoDG;InF29aP;ImFn4aA;MA5II,wBAoDG;InF89aP;ImFt4aA;MA5II,yBAoDG;InFi+aP;ImFz4aA;MA5II,sBAoDG;InFo+aP;ImF54aA;MA5II,yBAoDG;InFu+aP;ImF/4aA;MA5II,wBAoDG;InF0+aP;ImFl5aA;MA5II,sBAoDG;InF6+aP;ImFr5aA;MA5II,wBAoDG;InFg/aP;ImFx5aA;MA5II,sBAoDG;InFm/aP;ImF35aA;MA5II,yFAoDG;InFs/aP;ImF95aA;MA5II,sBAoDG;InFy/aP;ImFj6aA;MA5II,wFAoDG;InF4/aP;ImFp6aA;MA5II,qBAoDG;InF+/aP;ImFv6aA;MA5II,iBAoDG;InFkgbP;ImF16aA;MA5II,eAoDG;InFqgbP;ImF76aA;MA5II,kBAoDG;InFwgbP;EACF;EW7hbE;IwE4GA;MA5II,mBAoDG;InF6gbP;ImFr7aA;MA5II,iBAoDG;InFghbP;ImFx7aA;MA5II,WAoDG;InFmhbP;ImF37aA;MA5II,mBAoDG;InFshbP;ImF97aA;MA5II,iBAoDG;InFyhbP;ImFj8aA;MA5II,gBAoDG;InF4hbP;ImFp8aA;MA5II,sBAoDG;InF+hbP;ImFv8aA;MA5II,gBAoDG;InFkibP;ImF18aA;MA5II,eAyDO;InFgibX;ImF78aA;MA5II,qBAyDO;InFmibX;ImFh9aA;MA5II,cAyDO;InFsibX;ImFn9aA;MA5II,aAyDO;InFyibX;ImFt9aA;MA5II,oBAyDO;InF4ibX;ImFz9aA;MA5II,cAyDO;InF+ibX;ImF59aA;MA5II,kBAyDO;InFkjbX;ImF/9aA;MA5II,mBAyDO;InFqjbX;ImFl+aA;MA5II,aAyDO;InFwjbX;ImFr+aA;MA5II,oBAyDO;InF2jbX;ImFx+aA;MA5II,iBAyDO;InF8jbX;ImF3+aA;MA5II,kBAyDO;InFikbX;ImF9+aA;MA5II,aAyDO;InFokbX;ImFj/aA;MA5II,cAoDG;InF4kbP;ImFp/aA;MA5II,mBAyDO;InF0kbX;ImFv/aA;MA5II,sBAyDO;InF6kbX;ImF1/aA;MA5II,2BAyDO;InFglbX;ImF7/aA;MA5II,8BAyDO;InFmlbX;ImFhgbA;MA5II,YAoDG;InF2lbP;ImFngbA;MA5II,YAoDG;InF8lbP;ImFtgbA;MA5II,cAoDG;InFimbP;ImFzgbA;MA5II,cAoDG;InFombP;ImF5gbA;MA5II,eAyDO;InFkmbX;ImF/gbA;MA5II,iBAyDO;InFqmbX;ImFlhbA;MA5II,uBAyDO;InFwmbX;ImFrhbA;MA5II,2BAoDG;InFgnbP;ImFxhbA;MA5II,yBAoDG;InFmnbP;ImF3hbA;MA5II,uBAoDG;InFsnbP;ImF9hbA;MA5II,8BAoDG;InFynbP;ImFjibA;MA5II,6BAoDG;InF4nbP;ImFpibA;MA5II,6BAoDG;InF+nbP;ImFvibA;MA5II,oBAoDG;InFkobP;ImF1ibA;MA5II,kBAoDG;InFqobP;ImF7ibA;MA5II,qBAoDG;InFwobP;ImFhjbA;MA5II,sBAoDG;InF2obP;ImFnjbA;MA5II,mBAoDG;InF8obP;ImFtjbA;MA5II,iBAoDG;InFipbP;ImFzjbA;MA5II,oBAoDG;InFopbP;ImF5jbA;MA5II,uBAoDG;InFupbP;ImF/jbA;MA5II,qBAoDG;InF0pbP;ImFlkbA;MA5II,mBAoDG;InF6pbP;ImFrkbA;MA5II,qBAoDG;InFgqbP;ImFxkbA;MA5II,oBAoDG;InFmqbP;ImF3kbA;MA5II,yBAoDG;InFsqbP;ImF9kbA;MA5II,uBAoDG;InFyqbP;ImFjlbA;MA5II,qBAoDG;InF4qbP;ImFplbA;MA5II,4BAoDG;InF+qbP;ImFvlbA;MA5II,2BAoDG;InFkrbP;ImF1lbA;MA5II,sBAoDG;InFqrbP;ImF7lbA;MA5II,gBAoDG;InFwrbP;ImFhmbA;MA5II,sBAoDG;InF2rbP;ImFnmbA;MA5II,oBAoDG;InF8rbP;ImFtmbA;MA5II,kBAoDG;InFisbP;ImFzmbA;MA5II,oBAoDG;InFosbP;ImF5mbA;MA5II,mBAoDG;InFusbP;ImF/mbA;MA5II,kBAoDG;InF0sbP;ImFlnbA;MA5II,gBAoDG;InF6sbP;ImFrnbA;MA5II,mBAoDG;InFgtbP;ImFxnbA;MA5II,oBAoDG;InFmtbP;ImF3nbA;MA5II,0BAoDG;InFstbP;ImF9nbA;MA5II,qCAoDG;InFytbP;ImFjobA;MA5II,qCAoDG;InF4tbP;ImFpobA;MA5II,qCAoDG;InF+tbP;ImFvobA;MA5II,qCAoDG;InFkubP;ImF1obA;MA5II,mBAoDG;InFqubP;ImF7obA;MA5II,mBAyDO;InFmubX;ImFhpbA;MA5II,sBAyDO;InFsubX;ImFnpbA;MA5II,qBAyDO;InFyubX;ImFtpbA;MA5II,SAoDG;InFivbP;ImFzpbA;MA5II,QAoDG;InFovbP;ImF5pbA;MA5II,QAoDG;InFuvbP;ImF/pbA;MA5II,QAoDG;InF0vbP;ImFlqbA;MA5II,QAoDG;InF6vbP;ImFrqbA;MA5II,QAoDG;InFgwbP;ImFxqbA;MA5II,QAoDG;InFmwbP;ImF3qbA;MA5II,QAoDG;InFswbP;ImF9qbA;MA5II,SAoDG;InFywbP;ImFjrbA;MA5II,eAoDG;InF4wbP;ImFprbA;MA5II,cAoDG;InF+wbP;ImFvrbA;MA5II,eAoDG;InFkxbP;ImF1rbA;MA5II,YAoDG;InFqxbP;ImF7rbA;MA5II,eAoDG;InFwxbP;ImFhsbA;MA5II,cAoDG;InF2xbP;ImFnsbA;MA5II,YAoDG;InF8xbP;ImFtsbA;MA5II,cAoDG;InFiybP;ImFzsbA;MA5II,YAoDG;InFoybP;ImF5sbA;MA5II,YAoDG;InFuybP;ImF/sbA;MA5II,gBAoDG;InF0ybP;ImFltbA;MA5II,sBAoDG;InF6ybP;ImFrtbA;MA5II,qBAoDG;InFgzbP;ImFxtbA;MA5II,sBAoDG;InFmzbP;ImF3tbA;MA5II,mBAoDG;InFszbP;ImF9tbA;MA5II,sBAoDG;InFyzbP;ImFjubA;MA5II,qBAoDG;InF4zbP;ImFpubA;MA5II,mBAoDG;InF+zbP;ImFvubA;MA5II,qBAoDG;InFk0bP;ImF1ubA;MA5II,mBAoDG;InFq0bP;ImF7ubA;MA5II,mBAoDG;InFw0bP;ImFhvbA;MA5II,eAoDG;InF20bP;ImFnvbA;MA5II,qBAoDG;InF80bP;ImFtvbA;MA5II,oBAoDG;InFi1bP;ImFzvbA;MA5II,qBAoDG;InFo1bP;ImF5vbA;MA5II,kBAoDG;InFu1bP;ImF/vbA;MA5II,qBAoDG;InF01bP;ImFlwbA;MA5II,oBAoDG;InF61bP;ImFrwbA;MA5II,kBAoDG;InFg2bP;ImFxwbA;MA5II,oBAoDG;InFm2bP;ImF3wbA;MA5II,kBAoDG;InFs2bP;ImF9wbA;MA5II,kBAoDG;InFy2bP;ImFjxbA;MA5II,qBAoDG;InF42bP;ImFpxbA;MA5II,2BAoDG;InF+2bP;ImFvxbA;MA5II,0BAoDG;InFk3bP;ImF1xbA;MA5II,2BAoDG;InFq3bP;ImF7xbA;MA5II,wBAoDG;InFw3bP;ImFhybA;MA5II,2BAoDG;InF23bP;ImFnybA;MA5II,0BAoDG;InF83bP;ImFtybA;MA5II,wBAoDG;InFi4bP;ImFzybA;MA5II,0BAoDG;InFo4bP;ImF5ybA;MA5II,wBAoDG;InFu4bP;ImF/ybA;MA5II,wBAoDG;InF04bP;ImFlzbA;MA5II,oBAoDG;InF64bP;ImFrzbA;MA5II,0BAoDG;InFg5bP;ImFxzbA;MA5II,yBAoDG;InFm5bP;ImF3zbA;MA5II,0BAoDG;InFs5bP;ImF9zbA;MA5II,uBAoDG;InFy5bP;ImFj0bA;MA5II,0BAoDG;InF45bP;ImFp0bA;MA5II,yBAoDG;InF+5bP;ImFv0bA;MA5II,uBAoDG;InFk6bP;ImF10bA;MA5II,yBAoDG;InFq6bP;ImF70bA;MA5II,uBAoDG;InFw6bP;ImFh1bA;MA5II,2BAoDG;InF26bP;ImFn1bA;MA5II,0BAoDG;InF86bP;ImFt1bA;MA5II,uBAoDG;InFi7bP;ImFz1bA;MA5II,mBAoDG;InFo7bP;ImF51bA;MA5II,yBAoDG;InFu7bP;ImF/1bA;MA5II,wBAoDG;InF07bP;ImFl2bA;MA5II,yBAoDG;InF67bP;ImFr2bA;MA5II,sBAoDG;InFg8bP;ImFx2bA;MA5II,yBAoDG;InFm8bP;ImF32bA;MA5II,wBAoDG;InFs8bP;ImF92bA;MA5II,sBAoDG;InFy8bP;ImFj3bA;MA5II,wBAoDG;InF48bP;ImFp3bA;MA5II,sBAoDG;InF+8bP;ImFv3bA;MA5II,sBAoDG;InFk9bP;ImF13bA;MA5II,sBAoDG;InFq9bP;ImF73bA;MA5II,4BAoDG;InFw9bP;ImFh4bA;MA5II,2BAoDG;InF29bP;ImFn4bA;MA5II,4BAoDG;InF89bP;ImFt4bA;MA5II,yBAoDG;InFi+bP;ImFz4bA;MA5II,4BAoDG;InFo+bP;ImF54bA;MA5II,2BAoDG;InFu+bP;ImF/4bA;MA5II,yBAoDG;InF0+bP;ImFl5bA;MA5II,2BAoDG;InF6+bP;ImFr5bA;MA5II,yBAoDG;InFg/bP;ImFx5bA;MA5II,6BAoDG;InFm/bP;ImF35bA;MA5II,4BAoDG;InFs/bP;ImF95bA;MA5II,yBAoDG;InFy/bP;ImFj6bA;MA5II,UAoDG;InF4/bP;ImFp6bA;MA5II,gBAoDG;InF+/bP;ImFv6bA;MA5II,eAoDG;InFkgcP;ImF16bA;MA5II,gBAoDG;InFqgcP;ImF76bA;MA5II,aAoDG;InFwgcP;ImFh7bA;MA5II,gBAoDG;InF2gcP;ImFn7bA;MA5II,eAoDG;InF8gcP;ImFt7bA;MA5II,aAoDG;InFihcP;ImFz7bA;MA5II,eAoDG;InFohcP;ImF57bA;MA5II,aAoDG;InFuhcP;ImF/7bA;MA5II,iBAoDG;InF0hcP;ImFl8bA;MA5II,uBAoDG;InF6hcP;ImFr8bA;MA5II,sBAoDG;InFgicP;ImFx8bA;MA5II,uBAoDG;InFmicP;ImF38bA;MA5II,oBAoDG;InFsicP;ImF98bA;MA5II,uBAoDG;InFyicP;ImFj9bA;MA5II,sBAoDG;InF4icP;ImFp9bA;MA5II,oBAoDG;InF+icP;ImFv9bA;MA5II,sBAoDG;InFkjcP;ImF19bA;MA5II,oBAoDG;InFqjcP;ImF79bA;MA5II,gBAoDG;InFwjcP;ImFh+bA;MA5II,sBAoDG;InF2jcP;ImFn+bA;MA5II,qBAoDG;InF8jcP;ImFt+bA;MA5II,sBAoDG;InFikcP;ImFz+bA;MA5II,mBAoDG;InFokcP;ImF5+bA;MA5II,sBAoDG;InFukcP;ImF/+bA;MA5II,qBAoDG;InF0kcP;ImFl/bA;MA5II,mBAoDG;InF6kcP;ImFr/bA;MA5II,qBAoDG;InFglcP;ImFx/bA;MA5II,mBAoDG;InFmlcP;ImF3/bA;MA5II,sBAoDG;InFslcP;ImF9/bA;MA5II,4BAoDG;InFylcP;ImFjgcA;MA5II,2BAoDG;InF4lcP;ImFpgcA;MA5II,4BAoDG;InF+lcP;ImFvgcA;MA5II,yBAoDG;InFkmcP;ImF1gcA;MA5II,4BAoDG;InFqmcP;ImF7gcA;MA5II,2BAoDG;InFwmcP;ImFhhcA;MA5II,yBAoDG;InF2mcP;ImFnhcA;MA5II,2BAoDG;InF8mcP;ImFthcA;MA5II,yBAoDG;InFincP;ImFzhcA;MA5II,qBAoDG;InFoncP;ImF5hcA;MA5II,2BAoDG;InFuncP;ImF/hcA;MA5II,0BAoDG;InF0ncP;ImFlicA;MA5II,2BAoDG;InF6ncP;ImFricA;MA5II,wBAoDG;InFgocP;ImFxicA;MA5II,2BAoDG;InFmocP;ImF3icA;MA5II,0BAoDG;InFsocP;ImF9icA;MA5II,wBAoDG;InFyocP;ImFjjcA;MA5II,0BAoDG;InF4ocP;ImFpjcA;MA5II,wBAoDG;InF+ocP;ImFvjcA;MA5II,oBAoDG;InFkpcP;ImF1jcA;MA5II,0BAoDG;InFqpcP;ImF7jcA;MA5II,yBAoDG;InFwpcP;ImFhkcA;MA5II,0BAoDG;InF2pcP;ImFnkcA;MA5II,uBAoDG;InF8pcP;ImFtkcA;MA5II,0BAoDG;InFiqcP;ImFzkcA;MA5II,yBAoDG;InFoqcP;ImF5kcA;MA5II,uBAoDG;InFuqcP;ImF/kcA;MA5II,yBAoDG;InF0qcP;ImFllcA;MA5II,uBAoDG;InF6qcP;ImFrlcA;MA5II,uBAoDG;InFgrcP;ImFxlcA;MA5II,6BAoDG;InFmrcP;ImF3lcA;MA5II,4BAoDG;InFsrcP;ImF9lcA;MA5II,6BAoDG;InFyrcP;ImFjmcA;MA5II,0BAoDG;InF4rcP;ImFpmcA;MA5II,6BAoDG;InF+rcP;ImFvmcA;MA5II,4BAoDG;InFkscP;ImF1mcA;MA5II,0BAoDG;InFqscP;ImF7mcA;MA5II,4BAoDG;InFwscP;ImFhncA;MA5II,0BAoDG;InF2scP;ImFnncA;MA5II,MAoDG;InF8scP;ImFtncA;MA5II,YAoDG;InFitcP;ImFzncA;MA5II,WAoDG;InFotcP;ImF5ncA;MA5II,YAoDG;InFutcP;ImF/ncA;MA5II,SAoDG;InF0tcP;ImFlocA;MA5II,YAoDG;InF6tcP;ImFrocA;MA5II,WAoDG;InFgucP;ImFxocA;MA5II,SAoDG;InFmucP;ImF3ocA;MA5II,WAoDG;InFsucP;ImF9ocA;MA5II,SAoDG;InFyucP;ImFjpcA;MA5II,UAoDG;InF4ucP;ImFppcA;MA5II,gBAoDG;InF+ucP;ImFvpcA;MA5II,eAoDG;InFkvcP;ImF1pcA;MA5II,gBAoDG;InFqvcP;ImF7pcA;MA5II,aAoDG;InFwvcP;ImFhqcA;MA5II,gBAoDG;InF2vcP;ImFnqcA;MA5II,eAoDG;InF8vcP;ImFtqcA;MA5II,aAoDG;InFiwcP;ImFzqcA;MA5II,eAoDG;InFowcP;ImF5qcA;MA5II,aAoDG;InFuwcP;ImF/qcA;MA5II,aAoDG;InF0wcP;ImFlrcA;MA5II,mBAoDG;InF6wcP;ImFrrcA;MA5II,kBAoDG;InFgxcP;ImFxrcA;MA5II,mBAoDG;InFmxcP;ImF3rcA;MA5II,gBAoDG;InFsxcP;ImF9rcA;MA5II,mBAoDG;InFyxcP;ImFjscA;MA5II,kBAoDG;InF4xcP;ImFpscA;MA5II,gBAoDG;InF+xcP;ImFvscA;MA5II,kBAoDG;InFkycP;ImF1scA;MA5II,gBAoDG;InFqycP;ImF7scA;MA5II,oBAoDG;InFwycP;ImFhtcA;MA5II,0BAoDG;InF2ycP;ImFntcA;MA5II,yBAoDG;InF8ycP;ImFttcA;MA5II,0BAoDG;InFizcP;ImFztcA;MA5II,uBAoDG;InFozcP;ImF5tcA;MA5II,0BAoDG;InFuzcP;ImF/tcA;MA5II,yBAoDG;InF0zcP;ImFlucA;MA5II,uBAoDG;InF6zcP;ImFrucA;MA5II,yBAoDG;InFg0cP;ImFxucA;MA5II,uBAoDG;InFm0cP;ImF3ucA;MA5II,mBAoDG;InFs0cP;ImF9ucA;MA5II,yBAoDG;InFy0cP;ImFjvcA;MA5II,wBAoDG;InF40cP;ImFpvcA;MA5II,yBAoDG;InF+0cP;ImFvvcA;MA5II,sBAoDG;InFk1cP;ImF1vcA;MA5II,yBAoDG;InFq1cP;ImF7vcA;MA5II,wBAoDG;InFw1cP;ImFhwcA;MA5II,sBAoDG;InF21cP;ImFnwcA;MA5II,wBAoDG;InF81cP;ImFtwcA;MA5II,sBAoDG;InFi2cP;ImFzwcA;MA5II,yFAoDG;InFo2cP;ImF5wcA;MA5II,sBAoDG;InFu2cP;ImF/wcA;MA5II,wFAoDG;InF02cP;ImFlxcA;MA5II,qBAoDG;InF62cP;ImFrxcA;MA5II,iBAoDG;InFg3cP;ImFxxcA;MA5II,eAoDG;InFm3cP;ImF3xcA;MA5II,kBAoDG;InFs3cP;EACF;EW34cE;IwE4GA;MA5II,mBAoDG;InF23cP;ImFnycA;MA5II,iBAoDG;InF83cP;ImFtycA;MA5II,WAoDG;InFi4cP;ImFzycA;MA5II,mBAoDG;InFo4cP;ImF5ycA;MA5II,iBAoDG;InFu4cP;ImF/ycA;MA5II,gBAoDG;InF04cP;ImFlzcA;MA5II,sBAoDG;InF64cP;ImFrzcA;MA5II,gBAoDG;InFg5cP;ImFxzcA;MA5II,eAyDO;InF84cX;ImF3zcA;MA5II,qBAyDO;InFi5cX;ImF9zcA;MA5II,cAyDO;InFo5cX;ImFj0cA;MA5II,aAyDO;InFu5cX;ImFp0cA;MA5II,oBAyDO;InF05cX;ImFv0cA;MA5II,cAyDO;InF65cX;ImF10cA;MA5II,kBAyDO;InFg6cX;ImF70cA;MA5II,mBAyDO;InFm6cX;ImFh1cA;MA5II,aAyDO;InFs6cX;ImFn1cA;MA5II,oBAyDO;InFy6cX;ImFt1cA;MA5II,iBAyDO;InF46cX;ImFz1cA;MA5II,kBAyDO;InF+6cX;ImF51cA;MA5II,aAyDO;InFk7cX;ImF/1cA;MA5II,cAoDG;InF07cP;ImFl2cA;MA5II,mBAyDO;InFw7cX;ImFr2cA;MA5II,sBAyDO;InF27cX;ImFx2cA;MA5II,2BAyDO;InF87cX;ImF32cA;MA5II,8BAyDO;InFi8cX;ImF92cA;MA5II,YAoDG;InFy8cP;ImFj3cA;MA5II,YAoDG;InF48cP;ImFp3cA;MA5II,cAoDG;InF+8cP;ImFv3cA;MA5II,cAoDG;InFk9cP;ImF13cA;MA5II,eAyDO;InFg9cX;ImF73cA;MA5II,iBAyDO;InFm9cX;ImFh4cA;MA5II,uBAyDO;InFs9cX;ImFn4cA;MA5II,2BAoDG;InF89cP;ImFt4cA;MA5II,yBAoDG;InFi+cP;ImFz4cA;MA5II,uBAoDG;InFo+cP;ImF54cA;MA5II,8BAoDG;InFu+cP;ImF/4cA;MA5II,6BAoDG;InF0+cP;ImFl5cA;MA5II,6BAoDG;InF6+cP;ImFr5cA;MA5II,oBAoDG;InFg/cP;ImFx5cA;MA5II,kBAoDG;InFm/cP;ImF35cA;MA5II,qBAoDG;InFs/cP;ImF95cA;MA5II,sBAoDG;InFy/cP;ImFj6cA;MA5II,mBAoDG;InF4/cP;ImFp6cA;MA5II,iBAoDG;InF+/cP;ImFv6cA;MA5II,oBAoDG;InFkgdP;ImF16cA;MA5II,uBAoDG;InFqgdP;ImF76cA;MA5II,qBAoDG;InFwgdP;ImFh7cA;MA5II,mBAoDG;InF2gdP;ImFn7cA;MA5II,qBAoDG;InF8gdP;ImFt7cA;MA5II,oBAoDG;InFihdP;ImFz7cA;MA5II,yBAoDG;InFohdP;ImF57cA;MA5II,uBAoDG;InFuhdP;ImF/7cA;MA5II,qBAoDG;InF0hdP;ImFl8cA;MA5II,4BAoDG;InF6hdP;ImFr8cA;MA5II,2BAoDG;InFgidP;ImFx8cA;MA5II,sBAoDG;InFmidP;ImF38cA;MA5II,gBAoDG;InFsidP;ImF98cA;MA5II,sBAoDG;InFyidP;ImFj9cA;MA5II,oBAoDG;InF4idP;ImFp9cA;MA5II,kBAoDG;InF+idP;ImFv9cA;MA5II,oBAoDG;InFkjdP;ImF19cA;MA5II,mBAoDG;InFqjdP;ImF79cA;MA5II,kBAoDG;InFwjdP;ImFh+cA;MA5II,gBAoDG;InF2jdP;ImFn+cA;MA5II,mBAoDG;InF8jdP;ImFt+cA;MA5II,oBAoDG;InFikdP;ImFz+cA;MA5II,0BAoDG;InFokdP;ImF5+cA;MA5II,qCAoDG;InFukdP;ImF/+cA;MA5II,qCAoDG;InF0kdP;ImFl/cA;MA5II,qCAoDG;InF6kdP;ImFr/cA;MA5II,qCAoDG;InFgldP;ImFx/cA;MA5II,mBAoDG;InFmldP;ImF3/cA;MA5II,mBAyDO;InFildX;ImF9/cA;MA5II,sBAyDO;InFoldX;ImFjgdA;MA5II,qBAyDO;InFuldX;ImFpgdA;MA5II,SAoDG;InF+ldP;ImFvgdA;MA5II,QAoDG;InFkmdP;ImF1gdA;MA5II,QAoDG;InFqmdP;ImF7gdA;MA5II,QAoDG;InFwmdP;ImFhhdA;MA5II,QAoDG;InF2mdP;ImFnhdA;MA5II,QAoDG;InF8mdP;ImFthdA;MA5II,QAoDG;InFindP;ImFzhdA;MA5II,QAoDG;InFondP;ImF5hdA;MA5II,SAoDG;InFundP;ImF/hdA;MA5II,eAoDG;InF0ndP;ImFlidA;MA5II,cAoDG;InF6ndP;ImFridA;MA5II,eAoDG;InFgodP;ImFxidA;MA5II,YAoDG;InFmodP;ImF3idA;MA5II,eAoDG;InFsodP;ImF9idA;MA5II,cAoDG;InFyodP;ImFjjdA;MA5II,YAoDG;InF4odP;ImFpjdA;MA5II,cAoDG;InF+odP;ImFvjdA;MA5II,YAoDG;InFkpdP;ImF1jdA;MA5II,YAoDG;InFqpdP;ImF7jdA;MA5II,gBAoDG;InFwpdP;ImFhkdA;MA5II,sBAoDG;InF2pdP;ImFnkdA;MA5II,qBAoDG;InF8pdP;ImFtkdA;MA5II,sBAoDG;InFiqdP;ImFzkdA;MA5II,mBAoDG;InFoqdP;ImF5kdA;MA5II,sBAoDG;InFuqdP;ImF/kdA;MA5II,qBAoDG;InF0qdP;ImFlldA;MA5II,mBAoDG;InF6qdP;ImFrldA;MA5II,qBAoDG;InFgrdP;ImFxldA;MA5II,mBAoDG;InFmrdP;ImF3ldA;MA5II,mBAoDG;InFsrdP;ImF9ldA;MA5II,eAoDG;InFyrdP;ImFjmdA;MA5II,qBAoDG;InF4rdP;ImFpmdA;MA5II,oBAoDG;InF+rdP;ImFvmdA;MA5II,qBAoDG;InFksdP;ImF1mdA;MA5II,kBAoDG;InFqsdP;ImF7mdA;MA5II,qBAoDG;InFwsdP;ImFhndA;MA5II,oBAoDG;InF2sdP;ImFnndA;MA5II,kBAoDG;InF8sdP;ImFtndA;MA5II,oBAoDG;InFitdP;ImFzndA;MA5II,kBAoDG;InFotdP;ImF5ndA;MA5II,kBAoDG;InFutdP;ImF/ndA;MA5II,qBAoDG;InF0tdP;ImFlodA;MA5II,2BAoDG;InF6tdP;ImFrodA;MA5II,0BAoDG;InFgudP;ImFxodA;MA5II,2BAoDG;InFmudP;ImF3odA;MA5II,wBAoDG;InFsudP;ImF9odA;MA5II,2BAoDG;InFyudP;ImFjpdA;MA5II,0BAoDG;InF4udP;ImFppdA;MA5II,wBAoDG;InF+udP;ImFvpdA;MA5II,0BAoDG;InFkvdP;ImF1pdA;MA5II,wBAoDG;InFqvdP;ImF7pdA;MA5II,wBAoDG;InFwvdP;ImFhqdA;MA5II,oBAoDG;InF2vdP;ImFnqdA;MA5II,0BAoDG;InF8vdP;ImFtqdA;MA5II,yBAoDG;InFiwdP;ImFzqdA;MA5II,0BAoDG;InFowdP;ImF5qdA;MA5II,uBAoDG;InFuwdP;ImF/qdA;MA5II,0BAoDG;InF0wdP;ImFlrdA;MA5II,yBAoDG;InF6wdP;ImFrrdA;MA5II,uBAoDG;InFgxdP;ImFxrdA;MA5II,yBAoDG;InFmxdP;ImF3rdA;MA5II,uBAoDG;InFsxdP;ImF9rdA;MA5II,2BAoDG;InFyxdP;ImFjsdA;MA5II,0BAoDG;InF4xdP;ImFpsdA;MA5II,uBAoDG;InF+xdP;ImFvsdA;MA5II,mBAoDG;InFkydP;ImF1sdA;MA5II,yBAoDG;InFqydP;ImF7sdA;MA5II,wBAoDG;InFwydP;ImFhtdA;MA5II,yBAoDG;InF2ydP;ImFntdA;MA5II,sBAoDG;InF8ydP;ImFttdA;MA5II,yBAoDG;InFizdP;ImFztdA;MA5II,wBAoDG;InFozdP;ImF5tdA;MA5II,sBAoDG;InFuzdP;ImF/tdA;MA5II,wBAoDG;InF0zdP;ImFludA;MA5II,sBAoDG;InF6zdP;ImFrudA;MA5II,sBAoDG;InFg0dP;ImFxudA;MA5II,sBAoDG;InFm0dP;ImF3udA;MA5II,4BAoDG;InFs0dP;ImF9udA;MA5II,2BAoDG;InFy0dP;ImFjvdA;MA5II,4BAoDG;InF40dP;ImFpvdA;MA5II,yBAoDG;InF+0dP;ImFvvdA;MA5II,4BAoDG;InFk1dP;ImF1vdA;MA5II,2BAoDG;InFq1dP;ImF7vdA;MA5II,yBAoDG;InFw1dP;ImFhwdA;MA5II,2BAoDG;InF21dP;ImFnwdA;MA5II,yBAoDG;InF81dP;ImFtwdA;MA5II,6BAoDG;InFi2dP;ImFzwdA;MA5II,4BAoDG;InFo2dP;ImF5wdA;MA5II,yBAoDG;InFu2dP;ImF/wdA;MA5II,UAoDG;InF02dP;ImFlxdA;MA5II,gBAoDG;InF62dP;ImFrxdA;MA5II,eAoDG;InFg3dP;ImFxxdA;MA5II,gBAoDG;InFm3dP;ImF3xdA;MA5II,aAoDG;InFs3dP;ImF9xdA;MA5II,gBAoDG;InFy3dP;ImFjydA;MA5II,eAoDG;InF43dP;ImFpydA;MA5II,aAoDG;InF+3dP;ImFvydA;MA5II,eAoDG;InFk4dP;ImF1ydA;MA5II,aAoDG;InFq4dP;ImF7ydA;MA5II,iBAoDG;InFw4dP;ImFhzdA;MA5II,uBAoDG;InF24dP;ImFnzdA;MA5II,sBAoDG;InF84dP;ImFtzdA;MA5II,uBAoDG;InFi5dP;ImFzzdA;MA5II,oBAoDG;InFo5dP;ImF5zdA;MA5II,uBAoDG;InFu5dP;ImF/zdA;MA5II,sBAoDG;InF05dP;ImFl0dA;MA5II,oBAoDG;InF65dP;ImFr0dA;MA5II,sBAoDG;InFg6dP;ImFx0dA;MA5II,oBAoDG;InFm6dP;ImF30dA;MA5II,gBAoDG;InFs6dP;ImF90dA;MA5II,sBAoDG;InFy6dP;ImFj1dA;MA5II,qBAoDG;InF46dP;ImFp1dA;MA5II,sBAoDG;InF+6dP;ImFv1dA;MA5II,mBAoDG;InFk7dP;ImF11dA;MA5II,sBAoDG;InFq7dP;ImF71dA;MA5II,qBAoDG;InFw7dP;ImFh2dA;MA5II,mBAoDG;InF27dP;ImFn2dA;MA5II,qBAoDG;InF87dP;ImFt2dA;MA5II,mBAoDG;InFi8dP;ImFz2dA;MA5II,sBAoDG;InFo8dP;ImF52dA;MA5II,4BAoDG;InFu8dP;ImF/2dA;MA5II,2BAoDG;InF08dP;ImFl3dA;MA5II,4BAoDG;InF68dP;ImFr3dA;MA5II,yBAoDG;InFg9dP;ImFx3dA;MA5II,4BAoDG;InFm9dP;ImF33dA;MA5II,2BAoDG;InFs9dP;ImF93dA;MA5II,yBAoDG;InFy9dP;ImFj4dA;MA5II,2BAoDG;InF49dP;ImFp4dA;MA5II,yBAoDG;InF+9dP;ImFv4dA;MA5II,qBAoDG;InFk+dP;ImF14dA;MA5II,2BAoDG;InFq+dP;ImF74dA;MA5II,0BAoDG;InFw+dP;ImFh5dA;MA5II,2BAoDG;InF2+dP;ImFn5dA;MA5II,wBAoDG;InF8+dP;ImFt5dA;MA5II,2BAoDG;InFi/dP;ImFz5dA;MA5II,0BAoDG;InFo/dP;ImF55dA;MA5II,wBAoDG;InFu/dP;ImF/5dA;MA5II,0BAoDG;InF0/dP;ImFl6dA;MA5II,wBAoDG;InF6/dP;ImFr6dA;MA5II,oBAoDG;InFggeP;ImFx6dA;MA5II,0BAoDG;InFmgeP;ImF36dA;MA5II,yBAoDG;InFsgeP;ImF96dA;MA5II,0BAoDG;InFygeP;ImFj7dA;MA5II,uBAoDG;InF4geP;ImFp7dA;MA5II,0BAoDG;InF+geP;ImFv7dA;MA5II,yBAoDG;InFkheP;ImF17dA;MA5II,uBAoDG;InFqheP;ImF77dA;MA5II,yBAoDG;InFwheP;ImFh8dA;MA5II,uBAoDG;InF2heP;ImFn8dA;MA5II,uBAoDG;InF8heP;ImFt8dA;MA5II,6BAoDG;InFiieP;ImFz8dA;MA5II,4BAoDG;InFoieP;ImF58dA;MA5II,6BAoDG;InFuieP;ImF/8dA;MA5II,0BAoDG;InF0ieP;ImFl9dA;MA5II,6BAoDG;InF6ieP;ImFr9dA;MA5II,4BAoDG;InFgjeP;ImFx9dA;MA5II,0BAoDG;InFmjeP;ImF39dA;MA5II,4BAoDG;InFsjeP;ImF99dA;MA5II,0BAoDG;InFyjeP;ImFj+dA;MA5II,MAoDG;InF4jeP;ImFp+dA;MA5II,YAoDG;InF+jeP;ImFv+dA;MA5II,WAoDG;InFkkeP;ImF1+dA;MA5II,YAoDG;InFqkeP;ImF7+dA;MA5II,SAoDG;InFwkeP;ImFh/dA;MA5II,YAoDG;InF2keP;ImFn/dA;MA5II,WAoDG;InF8keP;ImFt/dA;MA5II,SAoDG;InFileP;ImFz/dA;MA5II,WAoDG;InFoleP;ImF5/dA;MA5II,SAoDG;InFuleP;ImF//dA;MA5II,UAoDG;InF0leP;ImFlgeA;MA5II,gBAoDG;InF6leP;ImFrgeA;MA5II,eAoDG;InFgmeP;ImFxgeA;MA5II,gBAoDG;InFmmeP;ImF3geA;MA5II,aAoDG;InFsmeP;ImF9geA;MA5II,gBAoDG;InFymeP;ImFjheA;MA5II,eAoDG;InF4meP;ImFpheA;MA5II,aAoDG;InF+meP;ImFvheA;MA5II,eAoDG;InFkneP;ImF1heA;MA5II,aAoDG;InFqneP;ImF7heA;MA5II,aAoDG;InFwneP;ImFhieA;MA5II,mBAoDG;InF2neP;ImFnieA;MA5II,kBAoDG;InF8neP;ImFtieA;MA5II,mBAoDG;InFioeP;ImFzieA;MA5II,gBAoDG;InFooeP;ImF5ieA;MA5II,mBAoDG;InFuoeP;ImF/ieA;MA5II,kBAoDG;InF0oeP;ImFljeA;MA5II,gBAoDG;InF6oeP;ImFrjeA;MA5II,kBAoDG;InFgpeP;ImFxjeA;MA5II,gBAoDG;InFmpeP;ImF3jeA;MA5II,oBAoDG;InFspeP;ImF9jeA;MA5II,0BAoDG;InFypeP;ImFjkeA;MA5II,yBAoDG;InF4peP;ImFpkeA;MA5II,0BAoDG;InF+peP;ImFvkeA;MA5II,uBAoDG;InFkqeP;ImF1keA;MA5II,0BAoDG;InFqqeP;ImF7keA;MA5II,yBAoDG;InFwqeP;ImFhleA;MA5II,uBAoDG;InF2qeP;ImFnleA;MA5II,yBAoDG;InF8qeP;ImFtleA;MA5II,uBAoDG;InFireP;ImFzleA;MA5II,mBAoDG;InForeP;ImF5leA;MA5II,yBAoDG;InFureP;ImF/leA;MA5II,wBAoDG;InF0reP;ImFlmeA;MA5II,yBAoDG;InF6reP;ImFrmeA;MA5II,sBAoDG;InFgseP;ImFxmeA;MA5II,yBAoDG;InFmseP;ImF3meA;MA5II,wBAoDG;InFsseP;ImF9meA;MA5II,sBAoDG;InFyseP;ImFjneA;MA5II,wBAoDG;InF4seP;ImFpneA;MA5II,sBAoDG;InF+seP;ImFvneA;MA5II,yFAoDG;InFkteP;ImF1neA;MA5II,sBAoDG;InFqteP;ImF7neA;MA5II,wFAoDG;InFwteP;ImFhoeA;MA5II,qBAoDG;InF2teP;ImFnoeA;MA5II,iBAoDG;InF8teP;ImFtoeA;MA5II,eAoDG;InFiueP;ImFzoeA;MA5II,kBAoDG;InFoueP;EACF;EWzveE;IwE4GA;MA5II,mBAoDG;InFyueP;ImFjpeA;MA5II,iBAoDG;InF4ueP;ImFppeA;MA5II,WAoDG;InF+ueP;ImFvpeA;MA5II,mBAoDG;InFkveP;ImF1peA;MA5II,iBAoDG;InFqveP;ImF7peA;MA5II,gBAoDG;InFwveP;ImFhqeA;MA5II,sBAoDG;InF2veP;ImFnqeA;MA5II,gBAoDG;InF8veP;ImFtqeA;MA5II,eAyDO;InF4veX;ImFzqeA;MA5II,qBAyDO;InF+veX;ImF5qeA;MA5II,cAyDO;InFkweX;ImF/qeA;MA5II,aAyDO;InFqweX;ImFlreA;MA5II,oBAyDO;InFwweX;ImFrreA;MA5II,cAyDO;InF2weX;ImFxreA;MA5II,kBAyDO;InF8weX;ImF3reA;MA5II,mBAyDO;InFixeX;ImF9reA;MA5II,aAyDO;InFoxeX;ImFjseA;MA5II,oBAyDO;InFuxeX;ImFpseA;MA5II,iBAyDO;InF0xeX;ImFvseA;MA5II,kBAyDO;InF6xeX;ImF1seA;MA5II,aAyDO;InFgyeX;ImF7seA;MA5II,cAoDG;InFwyeP;ImFhteA;MA5II,mBAyDO;InFsyeX;ImFnteA;MA5II,sBAyDO;InFyyeX;ImFtteA;MA5II,2BAyDO;InF4yeX;ImFzteA;MA5II,8BAyDO;InF+yeX;ImF5teA;MA5II,YAoDG;InFuzeP;ImF/teA;MA5II,YAoDG;InF0zeP;ImFlueA;MA5II,cAoDG;InF6zeP;ImFrueA;MA5II,cAoDG;InFg0eP;ImFxueA;MA5II,eAyDO;InF8zeX;ImF3ueA;MA5II,iBAyDO;InFi0eX;ImF9ueA;MA5II,uBAyDO;InFo0eX;ImFjveA;MA5II,2BAoDG;InF40eP;ImFpveA;MA5II,yBAoDG;InF+0eP;ImFvveA;MA5II,uBAoDG;InFk1eP;ImF1veA;MA5II,8BAoDG;InFq1eP;ImF7veA;MA5II,6BAoDG;InFw1eP;ImFhweA;MA5II,6BAoDG;InF21eP;ImFnweA;MA5II,oBAoDG;InF81eP;ImFtweA;MA5II,kBAoDG;InFi2eP;ImFzweA;MA5II,qBAoDG;InFo2eP;ImF5weA;MA5II,sBAoDG;InFu2eP;ImF/weA;MA5II,mBAoDG;InF02eP;ImFlxeA;MA5II,iBAoDG;InF62eP;ImFrxeA;MA5II,oBAoDG;InFg3eP;ImFxxeA;MA5II,uBAoDG;InFm3eP;ImF3xeA;MA5II,qBAoDG;InFs3eP;ImF9xeA;MA5II,mBAoDG;InFy3eP;ImFjyeA;MA5II,qBAoDG;InF43eP;ImFpyeA;MA5II,oBAoDG;InF+3eP;ImFvyeA;MA5II,yBAoDG;InFk4eP;ImF1yeA;MA5II,uBAoDG;InFq4eP;ImF7yeA;MA5II,qBAoDG;InFw4eP;ImFhzeA;MA5II,4BAoDG;InF24eP;ImFnzeA;MA5II,2BAoDG;InF84eP;ImFtzeA;MA5II,sBAoDG;InFi5eP;ImFzzeA;MA5II,gBAoDG;InFo5eP;ImF5zeA;MA5II,sBAoDG;InFu5eP;ImF/zeA;MA5II,oBAoDG;InF05eP;ImFl0eA;MA5II,kBAoDG;InF65eP;ImFr0eA;MA5II,oBAoDG;InFg6eP;ImFx0eA;MA5II,mBAoDG;InFm6eP;ImF30eA;MA5II,kBAoDG;InFs6eP;ImF90eA;MA5II,gBAoDG;InFy6eP;ImFj1eA;MA5II,mBAoDG;InF46eP;ImFp1eA;MA5II,oBAoDG;InF+6eP;ImFv1eA;MA5II,0BAoDG;InFk7eP;ImF11eA;MA5II,qCAoDG;InFq7eP;ImF71eA;MA5II,qCAoDG;InFw7eP;ImFh2eA;MA5II,qCAoDG;InF27eP;ImFn2eA;MA5II,qCAoDG;InF87eP;ImFt2eA;MA5II,mBAoDG;InFi8eP;ImFz2eA;MA5II,mBAyDO;InF+7eX;ImF52eA;MA5II,sBAyDO;InFk8eX;ImF/2eA;MA5II,qBAyDO;InFq8eX;ImFl3eA;MA5II,SAoDG;InF68eP;ImFr3eA;MA5II,QAoDG;InFg9eP;ImFx3eA;MA5II,QAoDG;InFm9eP;ImF33eA;MA5II,QAoDG;InFs9eP;ImF93eA;MA5II,QAoDG;InFy9eP;ImFj4eA;MA5II,QAoDG;InF49eP;ImFp4eA;MA5II,QAoDG;InF+9eP;ImFv4eA;MA5II,QAoDG;InFk+eP;ImF14eA;MA5II,SAoDG;InFq+eP;ImF74eA;MA5II,eAoDG;InFw+eP;ImFh5eA;MA5II,cAoDG;InF2+eP;ImFn5eA;MA5II,eAoDG;InF8+eP;ImFt5eA;MA5II,YAoDG;InFi/eP;ImFz5eA;MA5II,eAoDG;InFo/eP;ImF55eA;MA5II,cAoDG;InFu/eP;ImF/5eA;MA5II,YAoDG;InF0/eP;ImFl6eA;MA5II,cAoDG;InF6/eP;ImFr6eA;MA5II,YAoDG;InFggfP;ImFx6eA;MA5II,YAoDG;InFmgfP;ImF36eA;MA5II,gBAoDG;InFsgfP;ImF96eA;MA5II,sBAoDG;InFygfP;ImFj7eA;MA5II,qBAoDG;InF4gfP;ImFp7eA;MA5II,sBAoDG;InF+gfP;ImFv7eA;MA5II,mBAoDG;InFkhfP;ImF17eA;MA5II,sBAoDG;InFqhfP;ImF77eA;MA5II,qBAoDG;InFwhfP;ImFh8eA;MA5II,mBAoDG;InF2hfP;ImFn8eA;MA5II,qBAoDG;InF8hfP;ImFt8eA;MA5II,mBAoDG;InFiifP;ImFz8eA;MA5II,mBAoDG;InFoifP;ImF58eA;MA5II,eAoDG;InFuifP;ImF/8eA;MA5II,qBAoDG;InF0ifP;ImFl9eA;MA5II,oBAoDG;InF6ifP;ImFr9eA;MA5II,qBAoDG;InFgjfP;ImFx9eA;MA5II,kBAoDG;InFmjfP;ImF39eA;MA5II,qBAoDG;InFsjfP;ImF99eA;MA5II,oBAoDG;InFyjfP;ImFj+eA;MA5II,kBAoDG;InF4jfP;ImFp+eA;MA5II,oBAoDG;InF+jfP;ImFv+eA;MA5II,kBAoDG;InFkkfP;ImF1+eA;MA5II,kBAoDG;InFqkfP;ImF7+eA;MA5II,qBAoDG;InFwkfP;ImFh/eA;MA5II,2BAoDG;InF2kfP;ImFn/eA;MA5II,0BAoDG;InF8kfP;ImFt/eA;MA5II,2BAoDG;InFilfP;ImFz/eA;MA5II,wBAoDG;InFolfP;ImF5/eA;MA5II,2BAoDG;InFulfP;ImF//eA;MA5II,0BAoDG;InF0lfP;ImFlgfA;MA5II,wBAoDG;InF6lfP;ImFrgfA;MA5II,0BAoDG;InFgmfP;ImFxgfA;MA5II,wBAoDG;InFmmfP;ImF3gfA;MA5II,wBAoDG;InFsmfP;ImF9gfA;MA5II,oBAoDG;InFymfP;ImFjhfA;MA5II,0BAoDG;InF4mfP;ImFphfA;MA5II,yBAoDG;InF+mfP;ImFvhfA;MA5II,0BAoDG;InFknfP;ImF1hfA;MA5II,uBAoDG;InFqnfP;ImF7hfA;MA5II,0BAoDG;InFwnfP;ImFhifA;MA5II,yBAoDG;InF2nfP;ImFnifA;MA5II,uBAoDG;InF8nfP;ImFtifA;MA5II,yBAoDG;InFiofP;ImFzifA;MA5II,uBAoDG;InFoofP;ImF5ifA;MA5II,2BAoDG;InFuofP;ImF/ifA;MA5II,0BAoDG;InF0ofP;ImFljfA;MA5II,uBAoDG;InF6ofP;ImFrjfA;MA5II,mBAoDG;InFgpfP;ImFxjfA;MA5II,yBAoDG;InFmpfP;ImF3jfA;MA5II,wBAoDG;InFspfP;ImF9jfA;MA5II,yBAoDG;InFypfP;ImFjkfA;MA5II,sBAoDG;InF4pfP;ImFpkfA;MA5II,yBAoDG;InF+pfP;ImFvkfA;MA5II,wBAoDG;InFkqfP;ImF1kfA;MA5II,sBAoDG;InFqqfP;ImF7kfA;MA5II,wBAoDG;InFwqfP;ImFhlfA;MA5II,sBAoDG;InF2qfP;ImFnlfA;MA5II,sBAoDG;InF8qfP;ImFtlfA;MA5II,sBAoDG;InFirfP;ImFzlfA;MA5II,4BAoDG;InForfP;ImF5lfA;MA5II,2BAoDG;InFurfP;ImF/lfA;MA5II,4BAoDG;InF0rfP;ImFlmfA;MA5II,yBAoDG;InF6rfP;ImFrmfA;MA5II,4BAoDG;InFgsfP;ImFxmfA;MA5II,2BAoDG;InFmsfP;ImF3mfA;MA5II,yBAoDG;InFssfP;ImF9mfA;MA5II,2BAoDG;InFysfP;ImFjnfA;MA5II,yBAoDG;InF4sfP;ImFpnfA;MA5II,6BAoDG;InF+sfP;ImFvnfA;MA5II,4BAoDG;InFktfP;ImF1nfA;MA5II,yBAoDG;InFqtfP;ImF7nfA;MA5II,UAoDG;InFwtfP;ImFhofA;MA5II,gBAoDG;InF2tfP;ImFnofA;MA5II,eAoDG;InF8tfP;ImFtofA;MA5II,gBAoDG;InFiufP;ImFzofA;MA5II,aAoDG;InFoufP;ImF5ofA;MA5II,gBAoDG;InFuufP;ImF/ofA;MA5II,eAoDG;InF0ufP;ImFlpfA;MA5II,aAoDG;InF6ufP;ImFrpfA;MA5II,eAoDG;InFgvfP;ImFxpfA;MA5II,aAoDG;InFmvfP;ImF3pfA;MA5II,iBAoDG;InFsvfP;ImF9pfA;MA5II,uBAoDG;InFyvfP;ImFjqfA;MA5II,sBAoDG;InF4vfP;ImFpqfA;MA5II,uBAoDG;InF+vfP;ImFvqfA;MA5II,oBAoDG;InFkwfP;ImF1qfA;MA5II,uBAoDG;InFqwfP;ImF7qfA;MA5II,sBAoDG;InFwwfP;ImFhrfA;MA5II,oBAoDG;InF2wfP;ImFnrfA;MA5II,sBAoDG;InF8wfP;ImFtrfA;MA5II,oBAoDG;InFixfP;ImFzrfA;MA5II,gBAoDG;InFoxfP;ImF5rfA;MA5II,sBAoDG;InFuxfP;ImF/rfA;MA5II,qBAoDG;InF0xfP;ImFlsfA;MA5II,sBAoDG;InF6xfP;ImFrsfA;MA5II,mBAoDG;InFgyfP;ImFxsfA;MA5II,sBAoDG;InFmyfP;ImF3sfA;MA5II,qBAoDG;InFsyfP;ImF9sfA;MA5II,mBAoDG;InFyyfP;ImFjtfA;MA5II,qBAoDG;InF4yfP;ImFptfA;MA5II,mBAoDG;InF+yfP;ImFvtfA;MA5II,sBAoDG;InFkzfP;ImF1tfA;MA5II,4BAoDG;InFqzfP;ImF7tfA;MA5II,2BAoDG;InFwzfP;ImFhufA;MA5II,4BAoDG;InF2zfP;ImFnufA;MA5II,yBAoDG;InF8zfP;ImFtufA;MA5II,4BAoDG;InFi0fP;ImFzufA;MA5II,2BAoDG;InFo0fP;ImF5ufA;MA5II,yBAoDG;InFu0fP;ImF/ufA;MA5II,2BAoDG;InF00fP;ImFlvfA;MA5II,yBAoDG;InF60fP;ImFrvfA;MA5II,qBAoDG;InFg1fP;ImFxvfA;MA5II,2BAoDG;InFm1fP;ImF3vfA;MA5II,0BAoDG;InFs1fP;ImF9vfA;MA5II,2BAoDG;InFy1fP;ImFjwfA;MA5II,wBAoDG;InF41fP;ImFpwfA;MA5II,2BAoDG;InF+1fP;ImFvwfA;MA5II,0BAoDG;InFk2fP;ImF1wfA;MA5II,wBAoDG;InFq2fP;ImF7wfA;MA5II,0BAoDG;InFw2fP;ImFhxfA;MA5II,wBAoDG;InF22fP;ImFnxfA;MA5II,oBAoDG;InF82fP;ImFtxfA;MA5II,0BAoDG;InFi3fP;ImFzxfA;MA5II,yBAoDG;InFo3fP;ImF5xfA;MA5II,0BAoDG;InFu3fP;ImF/xfA;MA5II,uBAoDG;InF03fP;ImFlyfA;MA5II,0BAoDG;InF63fP;ImFryfA;MA5II,yBAoDG;InFg4fP;ImFxyfA;MA5II,uBAoDG;InFm4fP;ImF3yfA;MA5II,yBAoDG;InFs4fP;ImF9yfA;MA5II,uBAoDG;InFy4fP;ImFjzfA;MA5II,uBAoDG;InF44fP;ImFpzfA;MA5II,6BAoDG;InF+4fP;ImFvzfA;MA5II,4BAoDG;InFk5fP;ImF1zfA;MA5II,6BAoDG;InFq5fP;ImF7zfA;MA5II,0BAoDG;InFw5fP;ImFh0fA;MA5II,6BAoDG;InF25fP;ImFn0fA;MA5II,4BAoDG;InF85fP;ImFt0fA;MA5II,0BAoDG;InFi6fP;ImFz0fA;MA5II,4BAoDG;InFo6fP;ImF50fA;MA5II,0BAoDG;InFu6fP;ImF/0fA;MA5II,MAoDG;InF06fP;ImFl1fA;MA5II,YAoDG;InF66fP;ImFr1fA;MA5II,WAoDG;InFg7fP;ImFx1fA;MA5II,YAoDG;InFm7fP;ImF31fA;MA5II,SAoDG;InFs7fP;ImF91fA;MA5II,YAoDG;InFy7fP;ImFj2fA;MA5II,WAoDG;InF47fP;ImFp2fA;MA5II,SAoDG;InF+7fP;ImFv2fA;MA5II,WAoDG;InFk8fP;ImF12fA;MA5II,SAoDG;InFq8fP;ImF72fA;MA5II,UAoDG;InFw8fP;ImFh3fA;MA5II,gBAoDG;InF28fP;ImFn3fA;MA5II,eAoDG;InF88fP;ImFt3fA;MA5II,gBAoDG;InFi9fP;ImFz3fA;MA5II,aAoDG;InFo9fP;ImF53fA;MA5II,gBAoDG;InFu9fP;ImF/3fA;MA5II,eAoDG;InF09fP;ImFl4fA;MA5II,aAoDG;InF69fP;ImFr4fA;MA5II,eAoDG;InFg+fP;ImFx4fA;MA5II,aAoDG;InFm+fP;ImF34fA;MA5II,aAoDG;InFs+fP;ImF94fA;MA5II,mBAoDG;InFy+fP;ImFj5fA;MA5II,kBAoDG;InF4+fP;ImFp5fA;MA5II,mBAoDG;InF++fP;ImFv5fA;MA5II,gBAoDG;InFk/fP;ImF15fA;MA5II,mBAoDG;InFq/fP;ImF75fA;MA5II,kBAoDG;InFw/fP;ImFh6fA;MA5II,gBAoDG;InF2/fP;ImFn6fA;MA5II,kBAoDG;InF8/fP;ImFt6fA;MA5II,gBAoDG;InFiggBP;ImFz6fA;MA5II,oBAoDG;InFoggBP;ImF56fA;MA5II,0BAoDG;InFuggBP;ImF/6fA;MA5II,yBAoDG;InF0ggBP;ImFl7fA;MA5II,0BAoDG;InF6ggBP;ImFr7fA;MA5II,uBAoDG;InFghgBP;ImFx7fA;MA5II,0BAoDG;InFmhgBP;ImF37fA;MA5II,yBAoDG;InFshgBP;ImF97fA;MA5II,uBAoDG;InFyhgBP;ImFj8fA;MA5II,yBAoDG;InF4hgBP;ImFp8fA;MA5II,uBAoDG;InF+hgBP;ImFv8fA;MA5II,mBAoDG;InFkigBP;ImF18fA;MA5II,yBAoDG;InFqigBP;ImF78fA;MA5II,wBAoDG;InFwigBP;ImFh9fA;MA5II,yBAoDG;InF2igBP;ImFn9fA;MA5II,sBAoDG;InF8igBP;ImFt9fA;MA5II,yBAoDG;InFijgBP;ImFz9fA;MA5II,wBAoDG;InFojgBP;ImF59fA;MA5II,sBAoDG;InFujgBP;ImF/9fA;MA5II,wBAoDG;InF0jgBP;ImFl+fA;MA5II,sBAoDG;InF6jgBP;ImFr+fA;MA5II,yFAoDG;InFgkgBP;ImFx+fA;MA5II,sBAoDG;InFmkgBP;ImF3+fA;MA5II,wFAoDG;InFskgBP;ImF9+fA;MA5II,qBAoDG;InFykgBP;ImFj/fA;MA5II,iBAoDG;InF4kgBP;ImFp/fA;MA5II,eAoDG;InF+kgBP;ImFv/fA;MA5II,kBAoDG;InFklgBP;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-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-7);\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-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-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-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-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-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-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-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-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-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-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-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-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-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-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-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-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-fg: var(--fg-body);\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-bg: var(--bg-body);\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\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  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: transparent;\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: var(--spacer-2);\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-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [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(--radius-5);\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  [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], [type=datetime-local], [type=month], [type=week], [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  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-meridiem-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  ::-webkit-outer-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: 5%;\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: 10%;\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: 7.5%;\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: var(--spacer);\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-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\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(--radius-5);\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-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\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], :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], :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], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :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, :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  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\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    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .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: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\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    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2);\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(--radius-5);\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='%23ffffff80' 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, [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    pointer-events: none;\n    background-color: var(--control-action-bg);\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, [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  .form-control-caret {\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  .form-control-caret[multiple],\n  .form-control-caret[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    .form-control-caret {\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, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\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  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\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    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n  }\n  .check:checked, .check: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:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\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: calc(var(--radio-size) * 0.25);\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-fg);\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-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\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-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\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    flex-shrink: 0;\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: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\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    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:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\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-fg);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\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: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\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:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range:focus-visible {\n    outline: 0;\n  }\n  .form-range:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\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    background-image: var(--gradient);\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    background-image: var(--gradient);\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    background-image: var(--gradient);\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    background-image: var(--gradient);\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    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(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\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 > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\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(--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(--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    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\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  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5);\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    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\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 forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.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    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .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    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\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  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\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  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-valid ~ .valid-feedback,\n  .form-range.is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-range:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-range:user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.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    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .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    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\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  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\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  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-invalid ~ .invalid-feedback,\n  .form-range.is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-range:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range:user-invalid ~ .invalid-feedback,\n  [data-bs-validate] .form-range:user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\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(--radius-5);\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    background-image: none;\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-fg);\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-fg);\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-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\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-fg-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-fg-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-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) 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-fg) 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-fg);\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-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-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    background-image: none;\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    background-image: none;\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-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\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, :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, :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.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\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-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--radius-7));\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::-webkit-details-marker {\n    display: none;\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  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\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]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, 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: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, 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(--radius-5);\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 > p {\n    margin-bottom: 0;\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 > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\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 > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\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(--radius-7);\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-fg);\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-fg);\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(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\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(--radius-7);\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-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--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-fg, 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: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\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(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--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: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\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    border-radius: var(--card-border-radius);\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, :last-child),\n  .card-list:not(:first-child, :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-fg-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-fg-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, :last-child),\n  .card-row .card-list:not(:first-child, :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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\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    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\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(--radius-7);\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\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(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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    mask-repeat: no-repeat;\n    mask-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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\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(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\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-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\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    .sm-down\\: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  }\n  @media (width < 768px) {\n    .md-down\\: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  }\n  @media (width < 1024px) {\n    .lg-down\\: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  }\n  @media (width < 1280px) {\n    .xl-down\\: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  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\: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  }\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    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\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(--radius-5);\n    --menu-icon-size: 1rem;\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    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\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-fg, 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-fg-emphasis, 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    background-image: none;\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-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}\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(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\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-fg, 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-fg, 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-fg-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-fg-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    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\: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    .sm\\: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    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\: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    .sm\\: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  }\n  @media (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\: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    .md\\: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    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\: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    .md\\: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  }\n  @media (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\: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    .lg\\: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    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\: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    .lg\\: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  }\n  @media (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\: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    .xl\\: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    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\: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    .xl\\: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  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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  }\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(--radius-5);\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(--radius-5);\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-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\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    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\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-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 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(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\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 > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .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-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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 [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\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 [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\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    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\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.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-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(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-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    background-image: var(--gradient);\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%, rgb(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(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\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: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\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(--radius-5);\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@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\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-inline-start: 0;\n    list-style: none;\n    counter-reset: stepper;\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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-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  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\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: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\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@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.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(--radius-5);\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.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-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-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    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\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-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-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-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-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-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-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-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-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-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-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-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-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-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-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-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-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, :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, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :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  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\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  .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    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 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-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\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: start;\n  }\n  .justify-self-end {\n    justify-self: 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-1 {\n    grid-template-columns: 1fr;\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: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\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: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\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: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\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: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\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: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\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: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\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: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\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: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\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: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\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: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\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: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\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: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\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: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\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: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\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: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\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: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\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: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\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    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\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  .hover\\:link-10: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  .hover\\:link-20: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  .hover\\:link-30: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  .hover\\:link-40: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  .hover\\:link-50: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  .hover\\:link-60: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  .hover\\:link-70: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  .hover\\:link-80: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  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3: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  .hover\\:underline-10: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  .hover\\:underline-20: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  .hover\\:underline-30: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  .hover\\:underline-40: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  .hover\\:underline-50: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  .hover\\:underline-60: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  .hover\\:underline-70: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  .hover\\:underline-80: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  .hover\\:underline-90: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  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\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-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-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-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\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: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\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(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--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    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-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// 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-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(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-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(--radius-5),\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(--radius-5),\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(--radius-5),\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(--radius-7),\n    // scss-docs-end root-form-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// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\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 \"../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(--radius-5),\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: transparent; // 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-fg, 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-fg-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], [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  // 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\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [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  // 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-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\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  ::-webkit-outer-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:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !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-negative-margins:     false !default;\n$enable-deprecation-messages: 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 * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $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: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\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:      var(--spacer-2) !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-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  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(--radius-5), $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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\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: 5%,\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: 10%,\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: 7.5%,\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: var(--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-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\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// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\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, $prefix) {\n    @content($breakpoint, $next, $prefix);\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(--radius-5),\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-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\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: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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], :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], :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, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :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      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\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            .#{breakpoint-prefix($name, $breakpoints)}container {\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$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 ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$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        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$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          .#{$prefix}g-start-#{$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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2),\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/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(--radius-5),\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='#ffffff80' 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, [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      background-color: var(--control-action-bg);\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, [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  .form-control-caret {\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    .form-control-caret {\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, [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(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\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 \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" 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: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\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  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n\n    &:checked,\n    &: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/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\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: var(--bg-body),\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  .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: calc(var(--radio-size) * .25);\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-fg);\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    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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$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.75),\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-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\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    flex-shrink: 0;\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 rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\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      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\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-fg);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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/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: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\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    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\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: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\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 \"../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: rgb(255 255 255 / .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/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 \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" 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    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    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\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    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\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  }\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(--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/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\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    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\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    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // let clicks fall through to the input overlay\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\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  // OTP input sizing — keep in sync with `$form-control-sizes`.\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    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5),\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      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\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 \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-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: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — .form-range IS the <input>, so the mixin applies directly.\n  .form-range {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip { display: block; }\n    }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control: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  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\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(--radius-5),\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 rgb(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\": \"fg\",\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\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\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-fg, 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-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-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  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\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, :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, :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/mask-icon\" 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.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\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-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\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(--radius-7)),\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    &::-webkit-details-marker {\n      display: none;\n    }\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    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\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\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, 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: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, 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(--radius-5),\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 > p {\n    margin-bottom: 0;\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      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\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    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\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} > .avatar {\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      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" 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(--radius-7),\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\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\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/mask-icon\" 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(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\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(--radius-7),\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    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\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(--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-fg, 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: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\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(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--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: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .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, :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-fg-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-fg-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, :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            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\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            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\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/mask-icon\" 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(--radius-7),\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\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(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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>\"), $size: null);\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(--radius-5));\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(--radius-5));\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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/dialog-shared\" 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(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\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  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\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    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\: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    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(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    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\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 \"mixins/transition\" 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(--radius-7),\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(--radius-5),\n    --menu-icon-size: 1rem,\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    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\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(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\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-fg, 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-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\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      background-color: var(--theme-bg, var(--menu-item-active-bg));\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-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  // 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(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\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-fg, 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-fg, 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-fg-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-fg-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      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}list-group-horizontal {\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(--radius-5),\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-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\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(--radius-5));\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    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\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  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\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  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\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/mask-icon\" 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(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\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    background-color: var(--navbar-bg, var(--bg-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      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\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  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` 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    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\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, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\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/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  // Native ::backdrop for modal drawer.\n  // ::backdrop lives in the top layer outside the DOM tree, so it does NOT\n  // inherit custom properties from the element. Tokens must be applied directly.\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      @include tokens($drawer-backdrop-tokens);\n      @include tokens($drawer-tokens);\n      background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\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%, rgb(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(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\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: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\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","@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/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(--radius-5),\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 \"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-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-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  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\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}\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: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\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    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\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 \"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: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--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(--radius-5),\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@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","@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    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-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, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\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: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// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($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: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$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// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-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    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-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    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-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    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-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    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-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    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-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    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-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    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-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  \"fg\": var(--fg-body),\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  \"bg\": var(--bg-body),\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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, :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, :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 \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\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 target children via `child-selector`, wrapped in :where() for zero specificity\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 emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\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, $prefix: \"\") {\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, dark, important, state, variables, child-selector, enabled;\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  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` 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  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: 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        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\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    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\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/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.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/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.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/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.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":"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V;EmBl6EQ;IACE,wBAAA;EnBo6EV;EmBr6EQ;IACE,wBAAA;EnBu6EV;EmBx6EQ;IACE,wBAAA;EnB06EV;EmB36EQ;IACE,wBAAA;EnB66EV;EmB96EQ;IACE,wBAAA;EnBg7EV;EmBj7EQ;IACE,yBAAA;EnBm7EV;EmBp7EQ;IACE,yBAAA;EnBs7EV;EmBv7EQ;IACE,yBAAA;EnBy7EV;EmBl7EQ;IACE,oBAFS;EnBs7EnB;EmBr7EQ;IACE,oBAFS;EnBy7EnB;EmBx7EQ;IACE,oBAFS;EnB47EnB;EmB37EQ;IACE,oBAFS;EnB+7EnB;EmB97EQ;IACE,oBAFS;EnBk8EnB;EmBj8EQ;IACE,oBAFS;EnBq8EnB;EmBp8EQ;IACE,oBAFS;EnBw8EnB;EmBv8EQ;IACE,oBAFS;EnB28EnB;EmB18EQ;IACE,oBAFS;EnB88EnB;EmB78EQ;IACE,qBAFS;EnBi9EnB;EmBh9EQ;IACE,qBAFS;EnBo9EnB;EWx+EE;IQaM;MACE,wBAAA;InB89ER;ImB/9EM;MACE,wBAAA;InBi+ER;ImBl+EM;MACE,wBAAA;InBo+ER;ImBr+EM;MACE,wBAAA;InBu+ER;ImBx+EM;MACE,wBAAA;InB0+ER;ImB3+EM;MACE,wBAAA;InB6+ER;ImB9+EM;MACE,wBAAA;InBg/ER;ImBj/EM;MACE,wBAAA;InBm/ER;ImBp/EM;MACE,wBAAA;InBs/ER;ImBv/EM;MACE,yBAAA;InBy/ER;ImB1/EM;MACE,yBAAA;InB4/ER;ImB7/EM;MACE,yBAAA;InB+/ER;ImBx/EM;MACE,oBAFS;InB4/EjB;ImB3/EM;MACE,oBAFS;InB+/EjB;ImB9/EM;MACE,oBAFS;InBkgFjB;ImBjgFM;MACE,oBAFS;InBqgFjB;ImBpgFM;MACE,oBAFS;InBwgFjB;ImBvgFM;MACE,oBAFS;InB2gFjB;ImB1gFM;MACE,oBAFS;InB8gFjB;ImB7gFM;MACE,oBAFS;InBihFjB;ImBhhFM;MACE,oBAFS;InBohFjB;ImBnhFM;MACE,qBAFS;InBuhFjB;ImBthFM;MACE,qBAFS;InB0hFjB;EACF;EW/iFE;IQaM;MACE,wBAAA;InBqiFR;ImBtiFM;MACE,wBAAA;InBwiFR;ImBziFM;MACE,wBAAA;InB2iFR;ImB5iFM;MACE,wBAAA;InB8iFR;ImB/iFM;MACE,wBAAA;InBijFR;ImBljFM;MACE,wBAAA;InBojFR;ImBrjFM;MACE,wBAAA;InBujFR;ImBxjFM;MACE,wBAAA;InB0jFR;ImB3jFM;MACE,wBAAA;InB6jFR;ImB9jFM;MACE,yBAAA;InBgkFR;ImBjkFM;MACE,yBAAA;InBmkFR;ImBpkFM;MACE,yBAAA;InBskFR;ImB/jFM;MACE,oBAFS;InBmkFjB;ImBlkFM;MACE,oBAFS;InBskFjB;ImBrkFM;MACE,oBAFS;InBykFjB;ImBxkFM;MACE,oBAFS;InB4kFjB;ImB3kFM;MACE,oBAFS;InB+kFjB;ImB9kFM;MACE,oBAFS;InBklFjB;ImBjlFM;MACE,oBAFS;InBqlFjB;ImBplFM;MACE,oBAFS;InBwlFjB;ImBvlFM;MACE,oBAFS;InB2lFjB;ImB1lFM;MACE,qBAFS;InB8lFjB;ImB7lFM;MACE,qBAFS;InBimFjB;EACF;EWtnFE;IQaM;MACE,wBAAA;InB4mFR;ImB7mFM;MACE,wBAAA;InB+mFR;ImBhnFM;MACE,wBAAA;InBknFR;ImBnnFM;MACE,wBAAA;InBqnFR;ImBtnFM;MACE,wBAAA;InBwnFR;ImBznFM;MACE,wBAAA;InB2nFR;ImB5nFM;MACE,wBAAA;InB8nFR;ImB/nFM;MACE,wBAAA;InBioFR;ImBloFM;MACE,wBAAA;InBooFR;ImBroFM;MACE,yBAAA;InBuoFR;ImBxoFM;MACE,yBAAA;InB0oFR;ImB3oFM;MACE,yBAAA;InB6oFR;ImBtoFM;MACE,oBAFS;InB0oFjB;ImBzoFM;MACE,oBAFS;InB6oFjB;ImB5oFM;MACE,oBAFS;InBgpFjB;ImB/oFM;MACE,oBAFS;InBmpFjB;ImBlpFM;MACE,oBAFS;InBspFjB;ImBrpFM;MACE,oBAFS;InBypFjB;ImBxpFM;MACE,oBAFS;InB4pFjB;ImB3pFM;MACE,oBAFS;InB+pFjB;ImB9pFM;MACE,oBAFS;InBkqFjB;ImBjqFM;MACE,qBAFS;InBqqFjB;ImBpqFM;MACE,qBAFS;InBwqFjB;EACF;EW7rFE;IQaM;MACE,wBAAA;InBmrFR;ImBprFM;MACE,wBAAA;InBsrFR;ImBvrFM;MACE,wBAAA;InByrFR;ImB1rFM;MACE,wBAAA;InB4rFR;ImB7rFM;MACE,wBAAA;InB+rFR;ImBhsFM;MACE,wBAAA;InBksFR;ImBnsFM;MACE,wBAAA;InBqsFR;ImBtsFM;MACE,wBAAA;InBwsFR;ImBzsFM;MACE,wBAAA;InB2sFR;ImB5sFM;MACE,yBAAA;InB8sFR;ImB/sFM;MACE,yBAAA;InBitFR;ImBltFM;MACE,yBAAA;InBotFR;ImB7sFM;MACE,oBAFS;InBitFjB;ImBhtFM;MACE,oBAFS;InBotFjB;ImBntFM;MACE,oBAFS;InButFjB;ImBttFM;MACE,oBAFS;InB0tFjB;ImBztFM;MACE,oBAFS;InB6tFjB;ImB5tFM;MACE,oBAFS;InBguFjB;ImB/tFM;MACE,oBAFS;InBmuFjB;ImBluFM;MACE,oBAFS;InBsuFjB;ImBruFM;MACE,oBAFS;InByuFjB;ImBxuFM;MACE,qBAFS;InB4uFjB;ImB3uFM;MACE,qBAFS;InB+uFjB;EACF;EWpwFE;IQaM;MACE,wBAAA;InB0vFR;ImB3vFM;MACE,wBAAA;InB6vFR;ImB9vFM;MACE,wBAAA;InBgwFR;ImBjwFM;MACE,wBAAA;InBmwFR;ImBpwFM;MACE,wBAAA;InBswFR;ImBvwFM;MACE,wBAAA;InBywFR;ImB1wFM;MACE,wBAAA;InB4wFR;ImB7wFM;MACE,wBAAA;InB+wFR;ImBhxFM;MACE,wBAAA;InBkxFR;ImBnxFM;MACE,yBAAA;InBqxFR;ImBtxFM;MACE,yBAAA;InBwxFR;ImBzxFM;MACE,yBAAA;InB2xFR;ImBpxFM;MACE,oBAFS;InBwxFjB;ImBvxFM;MACE,oBAFS;InB2xFjB;ImB1xFM;MACE,oBAFS;InB8xFjB;ImB7xFM;MACE,oBAFS;InBiyFjB;ImBhyFM;MACE,oBAFS;InBoyFjB;ImBnyFM;MACE,oBAFS;InBuyFjB;ImBtyFM;MACE,o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iTE;IA5II,iBAoDG;EnF0oTT;EmFljTE;IA5II,gBAoDG;EnF6oTT;EmFrjTE;IA5II,sBAoDG;EnFgpTT;EmFxjTE;IA5II,gBAoDG;EnFmpTT;EmF3jTE;IA5II,UAoDG;EnFspTT;EmF9jTE;IA5II,aAoDG;EnFypTT;EmFjkTE;IA5II,YAoDG;EnF4pTT;EmFpkTE;IA5II,aAoDG;EnF+pTT;EmFvkTE;IA5II,UAoDG;EnFkqTT;EmF1kTE;IA5II,cAyDO;EnFgqTb;EmF7kTE;IA5II,gBAyDO;EnFmqTb;EmFhlTE;IA5II,iBAyDO;EnFsqTb;EmFnlTE;IA5II,gBAyDO;EnFyqTb;EmFtlTE;IA5II,gBAyDO;EnF4qTb;EmFzlTE;IA5II,kBAyDO;EnF+qTb;EmF5lTE;IA5II,mBAyDO;EnFkrTb;EmF/lTE;IA5II,kBAyDO;EnFqrTb;EmFlmTE;IA5II,gBAyDO;EnFwrTb;EmFrmTE;IA5II,kBAyDO;EnF2rTb;EmFxmTE;IA5II,mBAyDO;EnF8rTb;EmF3mTE;IA5II,kBAyDO;EnFisTb;EmF9mTE;IA5II,2BAoDG;EnFysTT;EmFjnTE;IA5II,oBAoDG;EnF4sTT;EmFpnTE;IA5II,eAyDO;EnF0sTb;EmFvnTE;IA5II,qBAyDO;EnF6sTb;EmF1nTE;IA5II,cAyDO;EnFgtTb;EmF7nTE;IA5II,aAyDO;EnFmtTb;EmFhoTE;IA5II,oBAyDO;EnFstTb;EmFnoTE;IA5II,cAyDO;EnFytTb;EmFtoTE;IA5II,kBAyDO;EnF4tTb;EmFzoTE;IA5II,mBAyDO;EnF+tTb;EmF5oTE;IA5II,aAyDO;EnFkuTb;EmF/oTE;IA5II,oBAyDO;EnFquTb;EmFlpTE;IA5II,iBAyDO;EnFwuTb;EmFrpTE;IA5II,kBAyDO;EnF2uTb;EmFxpTE;IA5II,aAyDO;EnF8uTb;EmF3pTE;IA5II,gCAoDG;EnFsvTT;EmF9pTE;IA5II,mCAoDG;EnFyvTT;EmFjqTE;IA5II,mCAoDG;EnF4vTT;EmFpqTE;IA5II,gBAoDG;EnF+vTT;EmFvqTE;IA5II,gBAyDO;EnF6vTb;EmF1qTE;IA5II,kBAyDO;EnFgwTb;EmF7qTE;IA5II,kBAyDO;EnFmwTb;EmFhrTE;IA5II,eAyDO;EnFswTb;EmFnrTE;IA5II,gBAyDO;EnFywTb;EmFtrTE;IA5II,MAoDG;EnFixTT;EmFzrTE;IA5II,QAoDG;EnFoxTT;EmF5rTE;IA5II,SAoDG;EnFuxTT;EmF/rTE;IA5II,SAoDG;EnF0xTT;EmFlsTE;IA5II,WAoDG;EnF6xTT;EmFrsTE;IA5II,YAoDG;EnFgyTT;EmFxsTE;IA5II,qBAoDG;EnFmyTT;EmF3sTE;IA5II,uBAoDG;EnFsyTT;EmF9sTE;IA5II,wBAoDG;EnFyyTT;EmFjtTE;IA5II,mBAoDG;EnF4yTT;EmFptTE;IA5II,qBAoDG;EnF+yTT;EmFvtTE;IA5II,sBAoDG;EnFkzTT;EmF1tTE;IA5II,gCAoDG;EnFqzTT;EmF7tTE;IA5II,2BAoDG;EnFwzTT;EmFhuTE;IA5II,2BAoDG;EnF2zTT;EmFnuTE;IA5II,4EAoDG;EnF8zTT;EmFtuTE;IA5II,SAoDG;EnFi0TT;EmFzuTE;IA5II,wFAoDG;EnFo0TT;EmF5uTE;IA5II,qBAoDG;EnFu0TT;EmF/uTE;IA5II,uFAoDG;EnF00TT;EmFlvTE;IA5II,oBAoDG;EnF60TT;EmFrvTE;IA5II,sFAoDG;EnFg1TT;EmFxvTE;IA5II,mBAoDG;EnFm1TT;EmF3vTE;IA5II,yFAoDG;EnFs1TT;EmF9vTE;IA5II,sBAoDG;EnFy1TT;EmFjwTE;IA5II,kFAoDG;EnF41TT;EmFpwTE;IA5II,eAoDG;EnF+1TT;EmFvwTE;IA5II,mFAoDG;EnFk2TT;EmF1wTE;IA5II,gBAoDG;EnFq2TT;EmF7wTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnF21Tf;EmFjxTE;IArJI,sCA6DG;IA7DH,oCA2ES;EnF+1Tf;EmFrxTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnFm2Tf;EmFzxTE;IArJI,sCA6DG;IA7DH,oCA2ES;EnFu2Tf;EmF7xTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnF22Tf;EmFjyTE;IArJI,oCA6DG;IA7DH,oCA2ES;EnF+2Tf;EmFryTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnFm3Tf;EmFzyTE;IArJI,yCA6DG;IA7DH,oCA2ES;EnFu3Tf;EmF7yTE;IArJI,sCA6DG;IA7DH,oCA2ES;EnF23Tf;EmFjzTE;IArJI,wCA6DG;IA7DH,oCA2ES;EnF+3Tf;EmFrzTE;IArJI,yCA6DG;IA7DH,oCA2ES;EnFm4Tf;EmFzzTE;IArJI,0CA6DG;IA7DH,oCA2ES;EnFu4Tf;EmF7zTE;IArJI,8CA6DG;IA7DH,oCA2ES;EnF24Tf;EmFj0TE;IArJI,yCA6DG;IA7DH,oCA2ES;EnF+4Tf;EmFr0TE;IArJI,yCA6DG;IA7DH,oCA2ES;EnFm5Tf;EmFz0TE;IArJI,2CA6DG;IA7DH,oCA2ES;EnFu5Tf;EmF70TE;IArJI,0CA6DG;IA7DH,oCA2ES;EnF25Tf;EmFj1TE;IArJI,2CA6DG;IA7DH,oCA2ES;EnF+5Tf;EmFr1TE;IArJI,0CA6DG;IA7DH,oCA2ES;EnFm6Tf;EmFz1TE;IArJI,2CA6DG;IA7DH,oCA2ES;EnFu6Tf;EmF71TE;IArJI,wCA6DG;IA7DH,oCA2ES;EnF26Tf;EmFj2TE;IArJI,2CA6DG;IA7DH,oCA2ES;EnF+6Tf;EmFr2TE;IArJI,6CA6DG;IA7DH,oCA2ES;EnFm7Tf;EmFz2TE;IA5II,iBAoDG;EnFo8TT;EmF52TE;IA5II,iBAoDG;EnFu8TT;EmF/2TE;IA5II,iBAoDG;EnF08TT;EmFl3TE;IA5II,iBAoDG;EnF68TT;EmFr3TE;IA5II,iBAoDG;EnFg9TT;EmFx3TE;IA5II,0EAoDG;EnFm9TT;EmF33TE;IA5II,0EAoDG;EnFs9TT;EmF93TE;IA5II,0EAoDG;EnFy9TT;EmFj4TE;IA5II,0EAoDG;EnF49TT;EmFp4TE;IA5II,0EAoDG;EnF+9TT;EmFv4TE;IA5II,0EAoDG;EnFk+TT;EmF14TE;IA5II,0EAoDG;EnFq+TT;EmF74TE;IA5II,0EAoDG;EnFw+TT;EmFh5TE;IA5II,0EAoDG;EnF2+TT;EmFn5TE;IA5II,oCAoDG;EnF8+TT;EmFt5TE;IA5II,WAoDG;EnFi/TT;EmFz5TE;IA5II,WAoDG;EnFo/TT;EmF55TE;IA5II,WAoDG;EnFu/TT;EmF/5TE;IA5II,WAoDG;EnF0/TT;EmFl6TE;IA5II,WAoDG;EnF6/TT;EmFr6TE;IA5II,WAoDG;EnFggUT;EmFx6TE;IA5II,WAoDG;EnFmgUT;EmF36TE;IA5II,WAoDG;EnFsgUT;EmF96TE;IA5II,WAoDG;EnFygUT;EmFj7TE;IA5II,YAoDG;EnF4gUT;EmFp7TE;IA5II,YAoDG;EnF+gUT;EmFv7TE;IA5II,YAoDG;EnFkhUT;EmF17TE;IA5II,UAoDG;EnFqhUT;EmF77TE;IA5II,UAoDG;EnFwhUT;EmFh8TE;IA5II,UAoDG;EnF2hUT;EmFn8TE;IA5II,WAoDG;EnF8hUT;EmFt8TE;IA5II,WAoDG;EnFiiUT;EmFz8TE;IA5II,kBAoDG;EnFoiUT;EmF58TE;IA5II,kBAoDG;EnFuiUT;EmF/8TE;IA5II,uBAoDG;IApDH,kBAoDG;EnF0iUT;EmFl9TE;IA5II,eAoDG;EnF6iUT;EmFr9TE;IA5II,YAoDG;EnFgjUT;EmFx9TE;IA5II,eAoDG;EnFmjUT;EmF39TE;IA5II,YAoDG;EnFsjUT;EmF99TE;IA5II,gBAoDG;EnFyjUT;EmFj+TE;IA5II,WAoDG;EnF4jUT;EmFp+TE;IA5II,WAoDG;EnF+jUT;EmFv+TE;IA5II,WAoDG;EnFkkUT;EmF1+TE;IA5II,YAoDG;EnFqkUT;EmF7+TE;IA5II,YAoDG;EnFwkUT;EmFh/TE;IA5II,mBAoDG;EnF2kUT;EmFn/TE;IA5II,mBAoDG;EnF8kUT;EmFt/TE;IA5II,wBAoDG;IApDH,mBAoDG;EnFilUT;EmFz/TE;IA5II,gBAoDG;EnFolUT;EmF5/TE;IA5II,aAoDG;EnFulUT;EmF//TE;IA5II,gBAoDG;EnF0lUT;EmFlgUE;IA5II,aAoDG;EnF6lUT;EmFrgUE;IA5II,iBAoDG;EnFgmUT;EmFxgUE;IA5II,cAoDG;EnFmmUT;EmF3gUE;IA5II,mBAyDO;EnFimUb;EmF9gUE;IA5II,sBAyDO;EnFomUb;EmFjhUE;IA5II,2BAyDO;EnFumUb;EmFphUE;IA5II,8BAyDO;EnF0mUb;EmFvhUE;IA5II,YAoDG;EnFknUT;EmF1hUE;IA5II,YAoDG;EnFqnUT;EmF7hUE;IA5II,cAoDG;EnFwnUT;EmFhiUE;IA5II,cAoDG;EnF2nUT;EmFniUE;IA5II,eAyDO;EnFynUb;EmFtiUE;IA5II,iBAyDO;EnF4nUb;EmFziUE;IA5II,uBAyDO;EnF+nUb;EmF5iUE;IA5II,2BAoDG;EnFuoUT;EmF/iUE;IA5II,yBAoDG;EnF0oUT;EmFljUE;IA5II,uBAoDG;EnF6oUT;EmFrjUE;IA5II,8BAoDG;EnFgpUT;EmFxjUE;IA5II,6BAoDG;EnFmpUT;EmF3jUE;IA5II,6BAoDG;EnFspUT;EmF9jUE;IA5II,oBAoDG;EnFypUT;EmFjkUE;IA5II,kBAoDG;EnF4pUT;EmFpkUE;IA5II,qBAoDG;EnF+pUT;EmFvkUE;IA5II,sBAoDG;EnFkqUT;EmF1kUE;IA5II,mBAoDG;EnFqqUT;EmF7kUE;IA5II,iBAoDG;EnFwqUT;EmFhlUE;IA5II,oBAoDG;EnF2qUT;EmFnlUE;IA5II,uBAoDG;EnF8qUT;EmFtlUE;IA5II,qBAoDG;EnFirUT;EmFzlUE;IA5II,mBAoDG;EnForUT;EmF5lUE;IA5II,qBAoDG;EnFurUT;EmF/lUE;IA5II,oBAoDG;EnF0rUT;EmFlmUE;IA5II,yBAoDG;EnF6rUT;EmFrmUE;IA5II,uBAoDG;EnFgsUT;EmFxmUE;IA5II,qBAoDG;EnFmsUT;EmF3mUE;IA5II,4BAoDG;EnFssUT;EmF9mUE;IA5II,2BAoDG;EnFysUT;EmFjnUE;IA5II,sBAoDG;EnF4sUT;EmFpnUE;IA5II,gBAoDG;EnF+sUT;EmFvnUE;IA5II,sBAoDG;EnFktUT;EmF1nUE;IA5II,oBAoDG;EnFqtUT;EmF7nUE;IA5II,kBAoDG;EnFwtUT;EmFhoUE;IA5II,oBAoDG;EnF2tUT;EmFnoUE;IA5II,mBAoDG;EnF8tUT;EmFtoUE;IA5II,kBAoDG;EnFiuUT;EmFzoUE;IA5II,gBAoDG;EnFouUT;EmF5oUE;IA5II,mBAoDG;EnFuuUT;EmF/oUE;IA5II,oBAoDG;EnF0uUT;EmFlpUE;IA5II,0BAoDG;EnF6uUT;EmFrpUE;IA5II,qCAoDG;EnFgvUT;EmFxpUE;IA5II,qCAoDG;EnFmvUT;EmF3pUE;IA5II,qCAoDG;EnFsvUT;EmF9pUE;IA5II,qCAoDG;EnFyvUT;EmFjqUE;IA5II,mBAoDG;EnF4vUT;EmFpqUE;IA5II,mBAyDO;EnF0vUb;EmFvqUE;IA5II,sBAyDO;EnF6vUb;EmF1qUE;IA5II,qBAyDO;EnFgwUb;EmF7qUE;IA5II,SAoDG;EnFwwUT;EmFhrUE;IA5II,QAoDG;EnF2wUT;EmFnrUE;IA5II,QAoDG;EnF8wUT;EmFtrUE;IA5II,QAoDG;EnFixUT;EmFzrUE;IA5II,QAoDG;EnFoxUT;EmF5rUE;IA5II,QAoDG;EnFuxUT;EmF/rUE;IA5II,QAoDG;EnF0xUT;EmFlsUE;IA5II,QAoDG;EnF6xUT;EmFrsUE;IA5II,SAoDG;EnFgyUT;EmFxsUE;IA5II,eAoDG;EnFmyUT;EmF3sUE;IA5II,cAoDG;EnFsyUT;EmF9sUE;IA5II,eAoDG;EnFyyUT;EmFjtUE;IA5II,YAoDG;EnF4yUT;EmFptUE;IA5II,eAoDG;EnF+yUT;EmFvtUE;IA5II,cAoDG;EnFkzUT;EmF1tUE;IA5II,YAoDG;EnFqzUT;EmF7tUE;IA5II,cAoDG;EnFwzUT;EmFhuUE;IA5II,YAoDG;EnF2zUT;EmFnuUE;IA5II,YAoDG;EnF8zUT;EmFtuUE;IA5II,gBAoDG;EnFi0UT;EmFzuUE;IA5II,sBAoDG;EnFo0UT;EmF5uUE;IA5II,qBAoDG;EnFu0UT;EmF/uUE;IA5II,sBAoDG;EnF00UT;EmFlvUE;IA5II,mBAoDG;EnF60UT;EmFrvUE;IA5II,sBAoDG;EnFg1UT;EmFxvUE;IA5II,qBAoDG;EnFm1UT;EmF3vUE;IA5II,mBAoDG;EnFs1UT;EmF9vUE;IA5II,qBAoDG;EnFy1UT;EmFjwUE;IA5II,mBAoDG;EnF41UT;EmFpwUE;IA5II,mBAoDG;EnF+1UT;EmFvwUE;IA5II,eAoDG;EnFk2UT;EmF1wUE;IA5II,qBAoDG;EnFq2UT;EmF7wUE;IA5II,oBAoDG;EnFw2UT;EmFhxUE;IA5II,qBAoDG;EnF22UT;EmFnxUE;IA5II,kBAoDG;EnF82UT;EmFtxUE;IA5II,qBAoDG;EnFi3UT;EmFzxUE;IA5II,oBAoDG;EnFo3UT;EmF5xUE;IA5II,kBAoDG;EnFu3UT;EmF/xUE;IA5II,oBAoDG;EnF03UT;EmFlyUE;IA5II,kBAoDG;EnF63UT;EmFryUE;IA5II,kBAoDG;EnFg4UT;EmFxyUE;IA5II,qBAoDG;EnFm4UT;EmF3yUE;IA5II,2BAoDG;EnFs4UT;EmF9yUE;IA5II,0BAoDG;EnFy4UT;EmFjzUE;IA5II,2BAoDG;EnF44UT;EmFpzUE;IA5II,wBAoDG;EnF+4UT;EmFvzUE;IA5II,2BAoDG;EnFk5UT;EmF1zUE;IA5II,0BAoDG;EnFq5UT;EmF7zUE;IA5II,wBAoDG;EnFw5UT;EmFh0UE;IA5II,0BAoDG;EnF25UT;EmFn0UE;IA5II,wBAoDG;EnF85UT;EmFt0UE;IA5II,wBAoDG;EnFi6UT;EmFz0UE;IA5II,oBAoDG;EnFo6UT;EmF50UE;IA5II,0BAoDG;EnFu6UT;EmF/0UE;IA5II,yBAoDG;EnF06UT;EmFl1UE;IA5II,0BAoDG;EnF66UT;EmFr1UE;IA5II,uBAoDG;EnFg7UT;EmFx1UE;IA5II,0BAoDG;EnFm7UT;EmF31UE;IA5II,yBAoDG;EnFs7UT;EmF91UE;IA5II,uBAoDG;EnFy7UT;EmFj2UE;IA5II,yBAoDG;EnF47UT;EmFp2UE;IA5II,uBAoDG;EnF+7UT;EmFv2UE;IA5II,2BAoDG;EnFk8UT;EmF12UE;IA5II,0BAoDG;EnFq8UT;EmF72UE;IA5II,uBAoDG;EnFw8UT;EmFh3UE;IA5II,mBAoDG;EnF28UT;EmFn3UE;IA5II,yBAoDG;EnF88UT;EmFt3UE;IA5II,wBAoDG;EnFi9UT;EmFz3UE;IA5II,yBAoDG;EnFo9UT;EmF53UE;IA5II,sBAoDG;EnFu9UT;EmF/3UE;IA5II,yBAoDG;EnF09UT;EmFl4UE;IA5II,wBAoDG;EnF69UT;EmFr4UE;IA5II,sBAoDG;EnFg+UT;EmFx4UE;IA5II,wBAoDG;EnFm+UT;EmF34UE;IA5II,sBAoDG;EnFs+UT;EmF94UE;IA5II,sBAoDG;EnFy+UT;EmFj5UE;IA5II,sBAoDG;EnF4+UT;EmFp5UE;IA5II,4BAoDG;EnF++UT;EmFv5UE;IA5II,2BAoDG;EnFk/UT;EmF15UE;IA5II,4BAoDG;EnFq/UT;EmF75UE;IA5II,yBAoDG;EnFw/UT;EmFh6UE;IA5II,4BAoDG;EnF2/UT;EmFn6UE;IA5II,2BAoDG;EnF8/UT;EmFt6UE;IA5II,yBAoDG;EnFigVT;EmFz6UE;IA5II,2BAoDG;EnFogVT;EmF56UE;IA5II,yBAoDG;EnFugVT;EmF/6UE;IA5II,6BAoDG;EnF0gVT;EmFl7UE;IA5II,4BAoDG;EnF6gVT;EmFr7UE;IA5II,yBAoDG;EnFghVT;EmFx7UE;IA5II,UAoDG;EnFmhVT;EmF37UE;IA5II,gBAoDG;EnFshVT;EmF97UE;IA5II,eAoDG;EnFyhVT;EmFj8UE;IA5II,gBAoDG;EnF4hVT;EmFp8UE;IA5II,aAoDG;EnF+hVT;EmFv8UE;IA5II,gBAoDG;EnFkiVT;EmF18UE;IA5II,eAoDG;EnFqiVT;EmF78UE;IA5II,aAoDG;EnFwiVT;EmFh9UE;IA5II,eAoDG;EnF2iVT;EmFn9UE;IA5II,aAoDG;EnF8iVT;EmFt9UE;IA5II,iBAoDG;EnFijVT;EmFz9UE;IA5II,uBAoDG;EnFojVT;EmF59UE;IA5II,sBAoDG;EnFujVT;EmF/9UE;IA5II,uBAoDG;EnF0jVT;EmFl+UE;IA5II,oBAoDG;EnF6jVT;EmFr+UE;IA5II,uBAoDG;EnFgkVT;EmFx+UE;IA5II,sBAoDG;EnFmkVT;EmF3+UE;IA5II,oBAoDG;EnFskVT;EmF9+UE;IA5II,sBAoDG;EnFykVT;EmFj/UE;IA5II,oBAoDG;EnF4kVT;EmFp/UE;IA5II,gBAoDG;EnF+kVT;EmFv/UE;IA5II,sBAoDG;EnFklVT;EmF1/UE;IA5II,qBAoDG;EnFqlVT;EmF7/UE;IA5II,sBAoDG;EnFwlVT;EmFhgVE;IA5II,mBAoDG;EnF2lVT;EmFngVE;IA5II,sBAoDG;EnF8lVT;EmFtgVE;IA5II,qBAoDG;EnFimVT;EmFzgVE;IA5II,mBAoDG;EnFomVT;EmF5gVE;IA5II,qBAoDG;EnFumVT;EmF/gVE;IA5II,mBAoDG;EnF0mVT;EmFlhVE;IA5II,sBAoDG;EnF6mVT;EmFrhVE;IA5II,4BAoDG;EnFgnVT;EmFxhVE;IA5II,2BAoDG;EnFmnVT;EmF3hVE;IA5II,4BAoDG;EnFsnVT;EmF9hVE;IA5II,yBAoDG;EnFynVT;EmFjiVE;IA5II,4BAoDG;EnF4nVT;EmFpiVE;IA5II,2BAoDG;EnF+nVT;EmFviVE;IA5II,yBAoDG;EnFkoVT;EmF1iVE;IA5II,2BAoDG;EnFqoVT;EmF7iVE;IA5II,yBAoDG;EnFwoVT;EmFhjVE;IA5II,qBAoDG;EnF2oVT;EmFnjVE;IA5II,2BAoDG;EnF8oVT;EmFtjVE;IA5II,0BAoDG;EnFipVT;EmFzjVE;IA5II,2BAoDG;EnFopVT;EmF5jVE;IA5II,wBAoDG;EnFupVT;EmF/jVE;IA5II,2BAoDG;EnF0pVT;EmFlkVE;IA5II,0BAoDG;EnF6pVT;EmFrkVE;IA5II,wBAoDG;EnFgqVT;EmFxkVE;IA5II,0BAoDG;EnFmqVT;EmF3kVE;IA5II,wBAoDG;EnFsqVT;EmF9kVE;IA5II,oBAoDG;EnFyqVT;EmFjlVE;IA5II,0BAoDG;EnF4qVT;EmFplVE;IA5II,yBAoDG;EnF+qVT;EmFvlVE;IA5II,0BAoDG;EnFkrVT;EmF1lVE;IA5II,uBAoDG;EnFqrVT;EmF7lVE;IA5II,0BAoDG;EnFwrVT;EmFhmVE;IA5II,yBAoDG;EnF2rVT;EmFnmVE;IA5II,uBAoDG;EnF8rVT;EmFtmVE;IA5II,yBAoDG;EnFisVT;EmFzmVE;IA5II,uBAoDG;EnFosVT;EmF5mVE;IA5II,uBAoDG;EnFusVT;EmF/mVE;IA5II,6BAoDG;EnF0sVT;EmFlnVE;IA5II,4BAoDG;EnF6sVT;EmFrnVE;IA5II,6BAoDG;EnFgtVT;EmFxnVE;IA5II,0BAoDG;EnFmtVT;EmF3nVE;IA5II,6BAoDG;EnFstVT;EmF9nVE;IA5II,4BAoDG;EnFytVT;EmFjoVE;IA5II,0BAoDG;EnF4tVT;EmFpoVE;IA5II,4BAoDG;EnF+tVT;EmFvoVE;IA5II,0BAoDG;EnFkuVT;EmF1oVE;IA5II,MAoDG;EnFquVT;EmF7oVE;IA5II,YAoDG;EnFwuVT;EmFhpVE;IA5II,WAoDG;EnF2uVT;EmFnpVE;IA5II,YAoDG;EnF8uVT;EmFtpVE;IA5II,SAoDG;EnFivVT;EmFzpVE;IA5II,YAoDG;EnFovVT;EmF5pVE;IA5II,WAoDG;EnFuvVT;EmF/pVE;IA5II,SAoDG;EnF0vVT;EmFlqVE;IA5II,WAoDG;EnF6vVT;EmFrqVE;IA5II,SAoDG;EnFgwVT;EmFxqVE;IA5II,UAoDG;EnFmwVT;EmF3qVE;IA5II,gBAoDG;EnFswVT;EmF9qVE;IA5II,eAoDG;EnFywVT;EmFjrVE;IA5II,gBAoDG;EnF4wVT;EmFprVE;IA5II,aAoDG;EnF+wVT;EmFvrVE;IA5II,gBAoDG;EnFkxVT;EmF1rVE;IA5II,eAoDG;EnFqxVT;EmF7rVE;IA5II,aAoDG;EnFwxVT;EmFhsVE;IA5II,eAoDG;EnF2xVT;EmFnsVE;IA5II,aAoDG;EnF8xVT;EmFtsVE;IA5II,aAoDG;EnFiyVT;EmFzsVE;IA5II,mBAoDG;EnFoyVT;EmF5sVE;IA5II,kBAoDG;EnFuyVT;EmF/sVE;IA5II,mBAoDG;EnF0yVT;EmFltVE;IA5II,gBAoDG;EnF6yVT;EmFrtVE;IA5II,mBAoDG;EnFgzVT;EmFxtVE;IA5II,kBAoDG;EnFmzVT;EmF3tVE;IA5II,gBAoDG;EnFszVT;EmF9tVE;IA5II,kBAoDG;EnFyzVT;EmFjuVE;IA5II,gBAoDG;EnF4zVT;EmFpuVE;IA5II,oBAoDG;EnF+zVT;EmFvuVE;IA5II,0BAoDG;EnFk0VT;EmF1uVE;IA5II,yBAoDG;EnFq0VT;EmF7uVE;IA5II,0BAoDG;EnFw0VT;EmFhvVE;IA5II,uBAoDG;EnF20VT;EmFnvVE;IA5II,0BAoDG;EnF80VT;EmFtvVE;IA5II,yBAoDG;EnFi1VT;EmFzvVE;IA5II,uBAoDG;EnFo1VT;EmF5vVE;IA5II,yBAoDG;EnFu1VT;EmF/vVE;IA5II,uBAoDG;EnF01VT;EmFlwVE;IA5II,mBAoDG;EnF61VT;EmFrwVE;IA5II,yBAoDG;EnFg2VT;EmFxw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EAoDG;EnF0sWT;EmFlnWE;IA5II,iEAoDG;EnF6sWT;EmFxmWM;IAzJA,iEAoDG;EnFgtWT;EmFxnWE;IA5II,iEAoDG;EnFmtWT;EmF9mWM;IAzJA,iEAoDG;EnFstWT;EmF9nWE;IA5II,iEAoDG;EnFytWT;EmFpnWM;IAzJA,iEAoDG;EnF4tWT;EmFpoWE;IA5II,iEAoDG;EnF+tWT;EmF1nWM;IAzJA,iEAoDG;EnFkuWT;EmF1oWE;IA5II,iEAoDG;EnFquWT;EmFhoWM;IAzJA,iEAoDG;EnFwuWT;EmFhpWE;IA5II,iEAoDG;EnF2uWT;EmFtoWM;IAzJA,iEAoDG;EnF8uWT;EmFtpWE;IA5II,iEAoDG;EnFivWT;EmF5oWM;IAzJA,iEAoDG;EnFovWT;EmF5pWE;IA5II,iEAoDG;EnFuvWT;EmFlpWM;IAzJA,iEAoDG;EnF0vWT;EmFlqWE;IA5II,2BAoDG;EnF6vWT;EmFxpWM;IAzJA,2BAoDG;EnFgwWT;EmFxqWE;IA5II,8BAoDG;EnFmwWT;EmF9pWM;IAzJA,8BAoDG;EnFswWT;EmF9qWE;IA5II,6BAoDG;EnFywWT;EmFpqWM;IAzJA,6BAoDG;EnF4wWT;EmFprWE;IA5II,8BAoDG;EnF+wWT;EmF1qWM;IAzJA,8BAoDG;EnFkxWT;EmF1rWE;IA5II,yEAoDG;EnFqxWT;EmF7rWE;IA5II,wHAoDG;EnFwxWT;EmFhsWE;IA5II,2EAoDG;EnF2xWT;EmFnsWE;IA5II,uEAoDG;EnF8xWT;EmFtsWE;IA5II,6EAoDG;EnFiyWT;EmFzsWE;IA5II,yEAoDG;EnFoyWT;EmF5sWE;IA5II,yEAoDG;EnFuyWT;EmF/sWE;IA5II,yEAoDG;EnF0yWT;EmFltWE;IA5II,iFAoDG;EnF6yWT;EmFxsWM;IAzJA,iFAoDG;EnFgzWT;EmFxtWE;IA5II,iFAoDG;EnFmzWT;EmF9sWM;IAzJA,iFAoDG;EnFszWT;EmF9tWE;IA5II,iFAoDG;EnFyzWT;EmFptWM;IAzJA,iFAoDG;EnF4zWT;EmFpuWE;IA5II,iFAoDG;EnF+zWT;EmF1tWM;IAzJA,iFAoDG;EnFk0WT;EmF1uWE;IA5II,iFAoDG;EnFq0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XT;EW95XE;IwE4GA;MA5II,mBAoDG;InF84XP;ImFtzXA;MA5II,iBAoDG;InFi5XP;ImFzzXA;MA5II,WAoDG;InFo5XP;ImF5zXA;MA5II,mBAoDG;InFu5XP;ImF/zXA;MA5II,iBAoDG;InF05XP;ImFl0XA;MA5II,gBAoDG;InF65XP;ImFr0XA;MA5II,sBAoDG;InFg6XP;ImFx0XA;MA5II,gBAoDG;InFm6XP;ImF30XA;MA5II,eAyDO;InFi6XX;ImF90XA;MA5II,qBAyDO;InFo6XX;ImFj1XA;MA5II,cAyDO;InFu6XX;ImFp1XA;MA5II,aAyDO;InF06XX;ImFv1XA;MA5II,oBAyDO;InF66XX;ImF11XA;MA5II,cAyDO;InFg7XX;ImF71XA;MA5II,kBAyDO;InFm7XX;ImFh2XA;MA5II,mBAyDO;InFs7XX;ImFn2XA;MA5II,aAyDO;InFy7XX;ImFt2XA;MA5II,oBAyDO;InF47XX;ImFz2XA;MA5II,iBAyDO;InF+7XX;ImF52XA;MA5II,kBAyDO;InFk8XX;ImF/2XA;MA5II,aAyDO;InFq8XX;ImFl3XA;MA5II,cAoDG;InF68XP;ImFr3XA;MA5II,mBAyDO;InF28XX;ImFx3XA;MA5II,sBAyDO;InF88XX;ImF33XA;MA5II,2BAyDO;InFi9XX;ImF93XA;MA5II,8BAyDO;InFo9XX;ImFj4XA;MA5II,YAoDG;InF49XP;ImFp4XA;MA5II,YAoDG;InF+9XP;ImFv4XA;MA5II,cAoDG;InFk+XP;ImF14XA;MA5II,cAoDG;InFq+XP;ImF74XA;MA5II,eAyDO;InFm+XX;ImFh5XA;MA5II,iBAyDO;InFs+XX;ImFn5XA;MA5II,uBAyDO;InFy+XX;ImFt5XA;MA5II,2BAoDG;InFi/XP;ImFz5XA;MA5II,yBAoDG;InFo/XP;ImF55XA;MA5II,uBAoDG;InFu/XP;ImF/5XA;MA5II,8BAoDG;InF0/XP;ImFl6XA;MA5II,6BAoDG;InF6/XP;ImFr6XA;MA5II,6BAoDG;InFggYP;ImFx6XA;MA5II,oBAoDG;InFmgYP;ImF36XA;MA5II,kBAoDG;InFsgYP;ImF96XA;MA5II,qBAoDG;InFygYP;ImFj7XA;MA5II,sBAoDG;InF4gYP;ImFp7XA;MA5II,mBAoDG;InF+gYP;ImFv7XA;MA5II,iBAoDG;InFkhYP;ImF17XA;MA5II,oBAoDG;InFqhYP;ImF77XA;MA5II,uBAoDG;InFwhYP;ImFh8XA;MA5II,qBAoDG;InF2hYP;ImFn8XA;MA5II,mBAoDG;InF8hYP;ImFt8XA;MA5II,qBAoDG;InFiiYP;ImFz8XA;MA5II,oBAoDG;InFoiYP;ImF58XA;MA5II,yBAoDG;InFuiYP;ImF/8XA;MA5II,uBAoDG;InF0iYP;ImFl9XA;MA5II,qBAoDG;InF6iYP;ImFr9XA;MA5II,4BAoDG;InFgjYP;ImFx9XA;MA5II,2BAoDG;InFmjYP;ImF39XA;MA5II,sBAoDG;InFsjYP;ImF99XA;MA5II,gBAoDG;InFyjYP;ImFj+XA;MA5II,sBAoDG;InF4jYP;ImFp+XA;MA5II,oBAoDG;InF+jYP;ImFv+XA;MA5II,kBAoDG;InFkkYP;ImF1+XA;MA5II,oBAoDG;InFqkYP;ImF7+XA;MA5II,mBAoDG;InFwkYP;ImFh/XA;MA5II,kBAoDG;InF2kYP;ImFn/XA;MA5II,gBAoDG;InF8kYP;ImFt/XA;MA5II,mBAoDG;InFilYP;ImFz/XA;MA5II,oBAoDG;InFolYP;ImF5/XA;MA5II,0BAoDG;InFulYP;ImF//XA;MA5II,qCAoDG;InF0lYP;ImFlgYA;MA5II,qCAoDG;InF6lYP;ImFrgYA;MA5II,qCAoDG;InFgmYP;ImFxgYA;MA5II,qCAoDG;InFmmYP;ImF3gYA;MA5II,mBAoDG;InFsmYP;ImF9gYA;MA5II,mBAyDO;InFomYX;ImFjhYA;MA5II,sBAyDO;InFumYX;ImFphYA;MA5II,qBAyDO;InF0mYX;ImFvhYA;MA5II,SAoDG;InFknYP;ImF1hYA;MA5II,QAoDG;InFqnYP;ImF7hYA;MA5II,QAoDG;InFwnYP;ImFhiYA;MA5II,QAoDG;InF2nYP;ImFniYA;MA5II,QAoDG;InF8nYP;ImFtiYA;MA5II,QAoDG;InFioYP;ImFziYA;MA5II,QAoDG;InFooYP;ImF5iYA;MA5II,QAoDG;InFuoYP;ImF/iYA;MA5II,SAoDG;InF0oYP;ImFljYA;MA5II,eAoDG;InF6oYP;ImFrjYA;MA5II,cAoDG;InFgpYP;ImFxjYA;MA5II,eAoDG;InFmpYP;ImF3jYA;MA5II,YAoDG;InFspYP;ImF9jYA;MA5II,eAoDG;InFypYP;ImFjkYA;MA5II,cAoDG;InF4pYP;ImFpkYA;MA5II,YAoDG;InF+pYP;ImFvkYA;MA5II,cAoDG;InFkqYP;ImF1kYA;MA5II,YAoDG;InFqqYP;ImF7kYA;MA5II,YAoDG;InFwqYP;ImFhlYA;MA5II,gBAoDG;InF2qYP;ImFnlYA;MA5II,sBAoDG;InF8qYP;ImFtlYA;MA5II,qBAoDG;InFirYP;ImFzlYA;MA5II,sBAoDG;InForYP;ImF5lYA;MA5II,mBAoDG;InFurYP;ImF/lYA;MA5II,sBAoDG;InF0rYP;ImFlmYA;MA5II,qBAoDG;InF6rYP;ImFrmYA;MA5II,mBAoDG;InFgsYP;ImFxmYA;MA5II,qBAoDG;InFmsYP;ImF3mYA;MA5II,mBAoDG;InFssYP;ImF9mYA;MA5II,mBAoDG;InFysYP;ImFjnYA;MA5II,eAoDG;InF4sYP;ImFpnYA;MA5II,qBAoDG;InF+sYP;ImFvnYA;MA5II,oBAoDG;InFktYP;ImF1nYA;MA5II,qBAoDG;InFqtYP;ImF7nYA;MA5II,kBAoDG;InFwtYP;ImFhoYA;MA5II,qBAoDG;InF2tYP;ImFnoYA;MA5II,oBAoDG;InF8tYP;ImFtoYA;MA5II,kBAoDG;InFiuYP;ImFzoYA;MA5II,oBAoDG;InFouYP;ImF5oYA;MA5II,kBAoDG;InFuuYP;ImF/oYA;MA5II,kBAoDG;InF0uYP;ImFlpYA;MA5II,qBAoDG;InF6uYP;ImFrpYA;MA5II,2BAoDG;InFgvYP;ImFxpYA;MA5II,0BAoDG;InFmvYP;ImF3pYA;MA5II,2BAoDG;InFsvYP;ImF9pYA;MA5II,wBAoDG;InFyvYP;ImFjqYA;MA5II,2BAoDG;InF4vYP;ImFpqYA;MA5II,0BAoDG;InF+vYP;ImFvqYA;MA5II,wBAoDG;InFkwYP;ImF1qYA;MA5II,0BAoDG;InFqwYP;ImF7qYA;MA5II,wBAoDG;InFwwYP;ImFhrYA;MA5II,wBAoDG;InF2wYP;ImFnrYA;MA5II,oBAoDG;InF8wYP;ImFtrYA;MA5II,0BAoDG;InFixYP;ImFzrYA;MA5II,yBAoDG;InFoxYP;ImF5rYA;MA5II,0BAoDG;InFuxYP;ImF/rYA;MA5II,uBAoDG;InF0xYP;ImFlsYA;MA5II,0BAoDG;InF6xYP;ImFrsYA;MA5II,yBAoDG;InFgyYP;ImFxsYA;MA5II,uBAoDG;InFmyYP;ImF3sYA;MA5II,yBAoDG;InFsyYP;ImF9sYA;MA5II,uBAoDG;InFyyYP;ImFjtYA;MA5II,2BAoDG;InF4yYP;ImFptYA;MA5II,0BAoDG;InF+yYP;ImFvtYA;MA5II,uBAoDG;InFkzYP;ImF1tYA;MA5II,mBAoDG;InFqzYP;ImF7tYA;MA5II,yBAoDG;InFwzYP;ImFhuYA;MA5II,wBAoDG;InF2zYP;ImFnuYA;MA5II,yBAoDG;InF8zYP;ImFtuYA;MA5II,sBAoDG;InFi0YP;ImFzuYA;MA5II,yBAoDG;InFo0YP;ImF5uYA;MA5II,wBAoDG;InFu0YP;ImF/uYA;MA5II,sBAoDG;InF00YP;ImFlvYA;MA5II,wBAoDG;InF60YP;ImFrvYA;MA5II,sBAoDG;InFg1YP;ImFxvYA;MA5II,sBAoDG;InFm1YP;ImF3vYA;MA5II,sBAoDG;InFs1YP;ImF9vYA;MA5II,4BAoDG;InFy1YP;ImFjwYA;MA5II,2BAoDG;InF41YP;ImFpwYA;MA5II,4BAoDG;InF+1YP;ImFvwYA;MA5II,yBAoDG;InFk2YP;ImF1wYA;MA5II,4BAoDG;InFq2YP;ImF7wYA;MA5II,2BAoDG;InFw2YP;ImFhxYA;MA5II,yBAoDG;InF22YP;ImFnxYA;MA5II,2BAoDG;InF82YP;ImFtxYA;MA5II,yBAoDG;InFi3YP;ImFzxYA;MA5II,6BAoDG;InFo3YP;ImF5xYA;MA5II,4BAoDG;InFu3YP;ImF/xYA;MA5II,yBAoDG;InF03YP;ImFlyYA;MA5II,UAoDG;InF63YP;ImFryYA;MA5II,gBAoDG;InFg4YP;ImFxyYA;MA5II,eAoDG;InFm4YP;ImF3yYA;MA5II,gBAoDG;InFs4YP;ImF9yYA;MA5II,aAoDG;InFy4YP;ImFjzYA;MA5II,gBAoDG;InF44YP;ImFpzYA;MA5II,eAoDG;InF+4YP;ImFvzYA;MA5II,aAoDG;InFk5YP;ImF1zYA;MA5II,eAoDG;InFq5YP;ImF7zYA;MA5II,aAoDG;InFw5YP;ImFh0YA;MA5II,iBAoDG;InF25YP;ImFn0YA;MA5II,uBAoDG;InF85YP;ImFt0YA;MA5II,sBAoDG;InFi6YP;ImFz0YA;MA5II,uBAoDG;InFo6YP;ImF50YA;MA5II,oBAoDG;InFu6YP;ImF/0YA;MA5II,uBAoDG;InF06YP;ImFl1YA;MA5II,sBAoDG;InF66YP;ImFr1YA;MA5II,oBAoDG;InFg7YP;ImFx1YA;MA5II,sBAoDG;InFm7YP;ImF31YA;MA5II,oBAoDG;InFs7YP;ImF91YA;MA5II,gBAoDG;InFy7YP;ImFj2YA;MA5II,sBAoDG;InF47YP;ImFp2YA;MA5II,qBAoDG;InF+7YP;ImFv2YA;MA5II,sBAoDG;InFk8YP;ImF12YA;MA5II,mBAoDG;InFq8YP;ImF72YA;MA5II,sBAoDG;InFw8YP;ImFh3YA;MA5II,qBAoDG;InF28YP;ImFn3YA;MA5II,mBAoDG;InF88YP;ImFt3YA;MA5II,qBAoDG;InFi9YP;ImFz3YA;MA5II,mBAoDG;InFo9YP;ImF53YA;MA5II,sBAoDG;InFu9YP;ImF/3YA;MA5II,4BAoDG;InF09YP;ImFl4YA;MA5II,2BAoDG;InF69YP;ImFr4YA;MA5II,4BAoDG;InFg+YP;ImFx4YA;MA5II,yBAoDG;InFm+YP;ImF34YA;MA5II,4BAoDG;InFs+YP;ImF94YA;MA5II,2BAoDG;InFy+YP;ImFj5YA;MA5II,yBAoDG;InF4+YP;ImFp5YA;MA5II,2BAoDG;InF++YP;ImFv5YA;MA5II,yBAoDG;InFk/YP;ImF15YA;MA5II,qBAoDG;InFq/YP;ImF75YA;MA5II,2BAoDG;InFw/YP;ImFh6YA;MA5II,0BAoDG;InF2/YP;ImFn6YA;MA5II,2BAoDG;InF8/YP;ImFt6YA;MA5II,wBAoDG;InFigZP;ImFz6YA;MA5II,2BAoDG;InFogZP;ImF56YA;MA5II,0BAoDG;InFugZP;ImF/6YA;MA5II,wBAoDG;InF0gZP;ImFl7YA;MA5II,0BAoDG;InF6gZP;ImFr7YA;MA5II,wBAoDG;InFghZP;ImFx7YA;MA5II,oBAoDG;InFmhZP;ImF37YA;MA5II,0BAoDG;InFshZP;ImF97YA;MA5II,yBAoDG;InFyhZP;ImFj8YA;MA5II,0BAoDG;InF4hZP;ImFp8YA;MA5II,uBAoDG;InF+hZP;ImFv8YA;MA5II,0BAoDG;InFkiZP;ImF18YA;MA5II,yBAoDG;InFqiZP;ImF78YA;MA5II,uBAoDG;InFwiZP;ImFh9YA;MA5II,yBAoDG;InF2iZP;ImFn9YA;MA5II,uBAoDG;InF8iZP;ImFt9YA;MA5II,uBAoDG;InFijZP;ImFz9YA;MA5II,6BAoDG;InFojZP;ImF59YA;MA5II,4BAoDG;InFujZP;ImF/9YA;MA5II,6BAoDG;InF0jZP;ImFl+YA;MA5II,0BAoDG;InF6jZP;ImFr+YA;MA5II,6BAoDG;InFgkZP;ImFx+YA;MA5II,4BAoDG;InFmkZP;ImF3+YA;MA5II,0BAoDG;InFskZP;ImF9+YA;MA5II,4BAoDG;InFykZP;ImFj/YA;MA5II,0BAoDG;InF4kZP;ImFp/YA;MA5II,MAoDG;InF+kZP;ImFv/YA;MA5II,YAoDG;InFklZP;ImF1/YA;MA5II,WAoDG;InFqlZP;ImF7/YA;MA5II,YAoDG;InFwlZP;ImFhgZA;MA5II,SAoDG;InF2lZP;ImFngZA;MA5II,YAoDG;InF8lZP;ImFtgZA;MA5II,WAoDG;InFimZP;ImFzgZA;MA5II,SAoDG;InFomZP;ImF5gZA;MA5II,WAoDG;InFumZP;ImF/gZA;MA5II,SAoDG;InF0mZP;ImFlhZA;MA5II,UAoDG;InF6mZP;ImFrhZA;MA5II,gBAoDG;InFgnZP;ImFxhZA;MA5II,eAoDG;InFmnZP;ImF3hZA;MA5II,gBAoDG;InFsnZP;ImF9hZA;MA5II,aAoDG;InFynZP;ImFjiZA;MA5II,gBAoDG;InF4nZP;ImFpiZA;MA5II,eAoDG;InF+nZP;ImFviZA;MA5II,aAoDG;InFkoZP;ImF1iZA;MA5II,eAoDG;InFqoZP;ImF7iZA;MA5II,aAoDG;InFwoZP;ImFhjZA;MA5II,aAoDG;InF2oZP;ImFnjZA;MA5II,mBAoDG;InF8oZP;ImFtjZA;MA5II,kBAoDG;InFipZP;ImFzjZA;MA5II,mBAoDG;InFopZP;ImF5jZA;MA5II,gBAoDG;InFupZP;ImF/jZA;MA5II,mBAoDG;InF0pZP;ImFlkZA;MA5II,kBAoDG;InF6pZP;ImFrkZA;MA5II,gBAoDG;InFgqZP;ImFxkZA;MA5II,kBAoDG;InFmqZP;ImF3kZA;MA5II,gBAoDG;InFsqZP;ImF9kZA;MA5II,oBAoDG;InFyqZP;ImFjlZA;MA5II,0BAoDG;InF4qZP;ImFplZA;MA5II,yBAoDG;InF+qZP;ImFvlZA;MA5II,0BAoDG;InFkrZP;ImF1lZA;MA5II,uBAoDG;InFqrZP;ImF7lZA;MA5II,0BAoDG;InFwrZP;ImFhmZA;MA5II,yBAoDG;InF2rZP;ImFnmZA;MA5II,uBAoDG;InF8rZP;ImFtmZA;MA5II,yBAoDG;InFisZP;ImFzmZA;MA5II,uBAoDG;InFosZP;ImF5mZA;MA5II,mBAoDG;InFusZP;ImF/mZA;MA5II,yBAoDG;InF0sZP;ImFlnZA;MA5II,wBAoDG;InF6sZP;ImFrnZA;MA5II,yBAoDG;InFgtZP;ImFxnZA;MA5II,sBAoDG;InFmtZP;ImF3nZA;MA5II,yBAoDG;InFstZP;ImF9nZA;MA5II,wBAoDG;InFytZP;ImFjoZA;MA5II,sBAoDG;InF4tZP;ImFpoZA;MA5II,wBAoDG;InF+tZP;ImFvoZA;MA5II,sBAoDG;InFkuZP;ImF1oZA;MA5II,yFAoDG;InFquZP;ImF7oZA;MA5II,sBAoDG;InFwuZP;ImFhpZA;MA5II,wFAoDG;InF2uZP;ImFnpZA;MA5II,qBAoDG;InF8uZP;ImFtpZA;MA5II,iBAoDG;InFivZP;ImFzpZA;MA5II,eAoDG;InFovZP;ImF5pZA;MA5II,kBAoDG;InFuvZP;EACF;EW5wZE;IwE4GA;MA5II,mBAoDG;InF4vZP;ImFpqZA;MA5II,iBAoDG;InF+vZP;ImFvqZA;MA5II,WAoDG;InFkwZP;ImF1qZA;MA5II,mBAoDG;InFqwZP;ImF7qZA;MA5II,iBAoDG;InFwwZP;ImFhrZA;MA5II,gBAoDG;InF2wZP;ImFnrZA;MA5II,sBAoDG;InF8wZP;ImFtrZA;MA5II,gBAoDG;InFixZP;ImFzrZA;MA5II,eAyDO;InF+wZX;ImF5rZA;MA5II,qBAyDO;InFkxZX;ImF/rZA;MA5II,cAyDO;InFqxZX;ImFlsZA;MA5II,aAyDO;InFwxZX;ImFrsZA;MA5II,oBAyDO;InF2xZX;ImFxsZA;MA5II,cAyDO;InF8xZX;ImF3sZA;MA5II,kBAyDO;InFiyZX;ImF9sZA;MA5II,mBAyDO;InFoyZX;ImFjtZA;MA5II,aAyDO;InFuyZX;ImFptZA;MA5II,oBAyDO;InF0yZX;ImFvtZA;MA5II,iBAyDO;InF6yZX;ImF1tZA;MA5II,kBAyDO;InFgzZX;ImF7tZA;MA5II,aAyDO;InFmzZX;ImFhuZA;MA5II,cAoDG;InF2zZP;ImFnuZA;MA5II,mBAyDO;InFyzZX;ImFtuZA;MA5II,sBAyDO;InF4zZX;ImFzuZA;MA5II,2BAyDO;InF+zZX;ImF5uZA;MA5II,8BAyDO;InFk0ZX;ImF/uZA;MA5II,YAoDG;InF00ZP;ImFlvZA;MA5II,YAoDG;InF60ZP;ImFrvZA;MA5II,cAoDG;InFg1ZP;ImFxvZA;MA5II,cAoDG;InFm1ZP;ImF3vZA;MA5II,eAyDO;InFi1ZX;ImF9vZA;MA5II,iBAyDO;InFo1ZX;ImFjwZA;MA5II,uBAyDO;InFu1ZX;ImFpwZA;MA5II,2BAoDG;InF+1ZP;ImFvwZA;MA5II,yBAoDG;InFk2ZP;ImF1wZA;MA5II,uBAoDG;InFq2ZP;ImF7wZA;MA5II,8BAoDG;InFw2ZP;ImFhxZA;MA5II,6BAoDG;InF22ZP;ImFnxZA;MA5II,6BAoDG;InF82ZP;ImFtxZA;MA5II,oBAoDG;InFi3ZP;ImFzxZA;MA5II,kBAoDG;InFo3ZP;ImF5xZA;MA5II,qBAoDG;InFu3ZP;ImF/xZA;MA5II,sBAoDG;InF03ZP;ImFlyZA;MA5II,mBAoDG;InF63ZP;ImFryZA;MA5II,iBAoDG;InFg4ZP;ImFxyZA;MA5II,oBAoDG;InFm4ZP;ImF3yZA;MA5II,uBAoDG;InFs4ZP;ImF9yZA;MA5II,qBAoDG;InFy4ZP;ImFjzZA;MA5II,mBAoDG;InF44ZP;ImFpzZA;MA5II,qBAoDG;InF+4ZP;ImFvzZA;MA5II,oBAoDG;InFk5ZP;ImF1zZA;MA5II,yBAoDG;InFq5ZP;ImF7zZA;MA5II,uBAoDG;InFw5ZP;ImFh0ZA;MA5II,qBAoDG;InF25ZP;ImFn0ZA;MA5II,4BAoDG;InF85ZP;ImFt0ZA;MA5II,2BAoDG;InFi6ZP;ImFz0ZA;MA5II,sBAoDG;InFo6ZP;ImF50ZA;MA5II,gBAoDG;InFu6ZP;ImF/0ZA;MA5II,sBAoDG;InF06ZP;ImFl1ZA;MA5II,oBAoDG;InF66ZP;ImFr1ZA;MA5II,kBAoDG;InFg7ZP;ImFx1ZA;MA5II,oBAoDG;InFm7ZP;ImF31ZA;MA5II,mBAoDG;InFs7ZP;ImF91ZA;MA5II,kBAoDG;InFy7ZP;ImFj2ZA;MA5II,gBAoDG;InF47ZP;ImFp2ZA;MA5II,mBAoDG;InF+7ZP;ImFv2ZA;MA5II,oBAoDG;InFk8ZP;ImF12ZA;MA5II,0BAoDG;InFq8ZP;ImF72ZA;MA5II,qCAoDG;InFw8ZP;ImFh3ZA;MA5II,qCAoDG;InF28ZP;ImFn3ZA;MA5II,qCAoDG;InF88ZP;ImFt3ZA;MA5II,qCAoDG;InFi9ZP;ImFz3ZA;MA5II,mBAoDG;InFo9ZP;ImF53ZA;MA5II,mBAyDO;InFk9ZX;ImF/3ZA;MA5II,sBAyDO;InFq9ZX;ImFl4ZA;MA5II,qBAyDO;InFw9ZX;ImFr4ZA;MA5II,SAoDG;InFg+ZP;ImFx4ZA;MA5II,QAoDG;InFm+ZP;ImF34ZA;MA5II,QAoDG;InFs+ZP;ImF94ZA;MA5II,QAoDG;InFy+ZP;ImFj5ZA;MA5II,QAoDG;InF4+ZP;ImFp5ZA;MA5II,QAoDG;InF++ZP;ImFv5ZA;MA5II,QAoDG;InFk/ZP;ImF15ZA;MA5II,QAoDG;InFq/ZP;ImF75ZA;MA5II,SAoDG;InFw/ZP;ImFh6ZA;MA5II,eAoDG;InF2/ZP;ImFn6ZA;MA5II,cAoDG;InF8/ZP;ImFt6ZA;MA5II,eAoDG;InFigaP;ImFz6ZA;MA5II,YAoDG;InFogaP;ImF56ZA;MA5II,eAoDG;InFugaP;ImF/6ZA;MA5II,cAoDG;InF0gaP;ImFl7ZA;MA5II,YAoDG;InF6gaP;ImFr7ZA;MA5II,cAoDG;InFghaP;ImFx7ZA;MA5II,YAoDG;InFmhaP;ImF37ZA;MA5II,YAoDG;InFshaP;ImF97ZA;MA5II,gBAoDG;InFyhaP;ImFj8ZA;MA5II,sBAoDG;InF4haP;ImFp8ZA;MA5II,qBAoDG;InF+haP;ImFv8ZA;MA5II,sBAoDG;InFkiaP;ImF18ZA;MA5II,mBAoDG;InFqiaP;ImF78ZA;MA5II,sBAoDG;InFwiaP;ImFh9ZA;MA5II,qBAoDG;InF2iaP;ImFn9ZA;MA5II,mBAoDG;InF8iaP;ImFt9ZA;MA5II,qBAoDG;InFijaP;ImFz9ZA;MA5II,mBAoDG;InFojaP;ImF59ZA;MA5II,mBAoDG;InFujaP;ImF/9ZA;MA5II,eAoDG;InF0jaP;ImFl+ZA;MA5II,qBAoDG;InF6jaP;ImFr+ZA;MA5II,oBAoDG;InFgkaP;ImFx+ZA;MA5II,qBAoDG;InFmkaP;ImF3+ZA;MA5II,kBAoDG;InFskaP;ImF9+ZA;MA5II,qBAoDG;InFykaP;ImFj/ZA;MA5II,oBAoDG;InF4kaP;ImFp/ZA;MA5II,kBAoDG;InF+kaP;ImFv/ZA;MA5II,oBAoDG;InFklaP;ImF1/ZA;MA5II,kBAoDG;InFqlaP;ImF7/ZA;MA5II,kBAoDG;InFwlaP;ImFhgaA;MA5II,qBAoDG;InF2laP;ImFngaA;MA5II,2BAoDG;InF8laP;ImFtgaA;MA5II,0BAoDG;InFimaP;ImFzgaA;MA5II,2BAoDG;InFomaP;ImF5gaA;MA5II,wBAoDG;InFumaP;ImF/gaA;MA5II,2BAoDG;InF0maP;ImFlhaA;MA5II,0BAoDG;InF6maP;ImFrhaA;MA5II,wBAoDG;InFgnaP;ImFxhaA;MA5II,0BAoDG;InFmnaP;ImF3haA;MA5II,wBAoDG;InFsnaP;ImF9haA;MA5II,wBAoDG;InFynaP;ImFjiaA;MA5II,oBAoDG;InF4naP;ImFpiaA;MA5II,0BAoDG;InF+naP;ImFviaA;MA5II,yBAoDG;InFkoaP;ImF1iaA;MA5II,0BAoDG;InFqoaP;ImF7iaA;MA5II,uBAoDG;InFwoaP;ImFhjaA;MA5II,0BAoDG;InF2oaP;ImFnjaA;MA5II,yBAoDG;InF8oaP;ImFtjaA;MA5II,uBAoDG;InFipaP;ImFzjaA;MA5II,yBAoDG;InFopaP;ImF5jaA;MA5II,uBAoDG;InFupaP;ImF/jaA;MA5II,2BAoDG;InF0paP;ImFlkaA;MA5II,0BAoDG;InF6paP;ImFrkaA;MA5II,uBAoDG;InFgqaP;ImFxkaA;MA5II,mBAoDG;InFmqaP;ImF3kaA;MA5II,yBAoDG;InFsqaP;ImF9kaA;MA5II,wBAoDG;InFyqaP;ImFjlaA;MA5II,yBAoDG;InF4qaP;ImFplaA;MA5II,sBAoDG;InF+qaP;ImFvlaA;MA5II,yBAoDG;InFkraP;ImF1laA;MA5II,wBAoDG;InFqraP;ImF7laA;MA5II,sBAoDG;InFwraP;ImFhmaA;MA5II,wBAoDG;InF2raP;ImFnmaA;MA5II,sBAoDG;InF8raP;ImFtmaA;MA5II,sBAoDG;InFisaP;ImFzmaA;MA5II,sBAoDG;InFosaP;ImF5maA;MA5II,4BAoDG;InFusaP;ImF/maA;MA5II,2BAoDG;InF0saP;ImFlnaA;MA5II,4BAoDG;InF6saP;ImFrnaA;MA5II,yBAoDG;InFgtaP;ImFxnaA;MA5II,4BAoDG;InFmtaP;ImF3naA;MA5II,2BAoDG;InFstaP;ImF9naA;MA5II,yBAoDG;InFytaP;ImFjoaA;MA5II,2BAoDG;InF4taP;ImFpoaA;MA5II,yBAoDG;InF+taP;ImFvoaA;MA5II,6BAoDG;InFkuaP;ImF1oaA;MA5II,4BAoDG;InFquaP;ImF7oaA;MA5II,yBAoDG;InFwuaP;ImFhpaA;MA5II,UAoDG;InF2uaP;ImFnpaA;MA5II,gBAoDG;InF8uaP;ImFtpaA;MA5II,eAoDG;InFivaP;ImFzpaA;MA5II,gBAoDG;InFovaP;ImF5paA;MA5II,aAoDG;InFuvaP;ImF/paA;MA5II,gBAoDG;InF0vaP;ImFlqaA;MA5II,eAoDG;InF6vaP;ImFrqaA;MA5II,aAoDG;InFgwaP;ImFxqaA;MA5II,eAoDG;InFmwaP;ImF3qaA;MA5II,aAoDG;InFswaP;ImF9qaA;MA5II,iBAoDG;InFywaP;ImFjraA;MA5II,uBAoDG;InF4waP;ImFpraA;MA5II,sBAoDG;InF+waP;ImFvraA;MA5II,uBAoDG;InFkxaP;ImF1raA;MA5II,oBAoDG;InFqxaP;ImF7raA;MA5II,uBAoDG;InFwxaP;ImFhsaA;MA5II,sBAoDG;InF2xaP;ImFnsaA;MA5II,oBAoDG;InF8xaP;ImFtsaA;MA5II,sBAoDG;InFiyaP;ImFzsaA;MA5II,oBAoDG;InFoyaP;ImF5saA;MA5II,gBAoDG;InFuyaP;ImF/saA;MA5II,sBAoDG;InF0yaP;ImFltaA;MA5II,qBAoDG;InF6yaP;ImFrtaA;MA5II,sBAoDG;InFgzaP;ImFxtaA;MA5II,mBAoDG;InFmzaP;ImF3taA;MA5II,sBAoDG;InFszaP;ImF9taA;MA5II,qBAoDG;InFyzaP;ImFjuaA;MA5II,mBAoDG;InF4zaP;ImFpuaA;MA5II,qBAoDG;InF+zaP;ImFvuaA;MA5II,mBAoDG;InFk0aP;ImF1uaA;MA5II,sBAoDG;InFq0aP;ImF7uaA;MA5II,4BAoDG;InFw0aP;ImFhvaA;MA5II,2BAoDG;InF20aP;ImFnvaA;MA5II,4BAoDG;InF80aP;ImFtvaA;MA5II,yBAoDG;InFi1aP;ImFzvaA;MA5II,4BAoDG;InFo1aP;ImF5vaA;MA5II,2BAoDG;InFu1aP;ImF/vaA;MA5II,yBAoDG;InF01aP;ImFlwaA;MA5II,2BAoDG;InF61aP;ImFrwaA;MA5II,yBAoDG;InFg2aP;ImFxwaA;MA5II,qBAoDG;InFm2aP;ImF3waA;MA5II,2BAoDG;InFs2aP;ImF9waA;MA5II,0BAoDG;InFy2aP;ImFjxaA;MA5II,2BAoDG;InF42aP;ImFpxaA;MA5II,wBAoDG;InF+2aP;ImFvxaA;MA5II,2BAoDG;InFk3aP;ImF1xaA;MA5II,0BAoDG;InFq3aP;ImF7xaA;MA5II,wBAoDG;InFw3aP;ImFhyaA;MA5II,0BAoDG;InF23aP;ImFnyaA;MA5II,wBAoDG;InF83aP;ImFtyaA;MA5II,oBAoDG;InFi4aP;ImFzyaA;MA5II,0BAoDG;InFo4aP;ImF5yaA;MA5II,yBAoDG;InFu4aP;ImF/yaA;MA5II,0BAoDG;InF04aP;ImFlzaA;MA5II,uBAoDG;InF64aP;ImFrzaA;MA5II,0BAoDG;InFg5aP;ImFxzaA;MA5II,yBAoDG;InFm5aP;ImF3zaA;MA5II,uBAoDG;InFs5aP;ImF9zaA;MA5II,yBAoDG;InFy5aP;ImFj0aA;MA5II,uBAoDG;InF45aP;ImFp0aA;MA5II,uBAoDG;InF+5aP;ImFv0aA;MA5II,6BAoDG;InFk6aP;ImF10aA;MA5II,4BAoDG;InFq6aP;ImF70aA;MA5II,6BAoDG;InFw6aP;ImFh1aA;MA5II,0BAoDG;InF26aP;ImFn1aA;MA5II,6BAoDG;InF86aP;ImFt1aA;MA5II,4BAoDG;InFi7aP;ImFz1aA;MA5II,0BAoDG;InFo7aP;ImF51aA;MA5II,4BAoDG;InFu7aP;ImF/1aA;MA5II,0BAoDG;InF07aP;ImFl2aA;MA5II,MAoDG;InF67aP;ImFr2aA;MA5II,YAoDG;InFg8aP;ImFx2aA;MA5II,WAoDG;InFm8aP;ImF32aA;MA5II,YAoDG;InFs8aP;ImF92aA;MA5II,SAoDG;InFy8aP;ImFj3aA;MA5II,YAoDG;InF48aP;ImFp3aA;MA5II,WAoDG;InF+8aP;ImFv3aA;MA5II,SAoDG;InFk9aP;ImF13aA;MA5II,WAoDG;InFq9aP;ImF73aA;MA5II,SAoDG;InFw9aP;ImFh4aA;MA5II,UAoDG;InF29aP;ImFn4aA;MA5II,gBAoDG;InF89aP;ImFt4aA;MA5II,eAoDG;InFi+aP;ImFz4aA;MA5II,gBAoDG;InFo+aP;ImF54aA;MA5II,aAoDG;InFu+aP;ImF/4aA;MA5II,gBAoDG;InF0+aP;ImFl5aA;MA5II,eAoDG;InF6+aP;ImFr5aA;MA5II,aAoDG;InFg/aP;ImFx5aA;MA5II,eAoDG;InFm/aP;ImF35aA;MA5II,aAoDG;InFs/aP;ImF95aA;MA5II,aAoDG;InFy/aP;ImFj6aA;MA5II,mBAoDG;InF4/aP;ImFp6aA;MA5II,kBAoDG;InF+/aP;ImFv6aA;MA5II,mBAoDG;InFkgbP;ImF16aA;MA5II,gBAoDG;InFqgbP;ImF76aA;MA5II,mBAoDG;InFwgbP;ImFh7aA;MA5II,kBAoDG;InF2gbP;ImFn7aA;MA5II,gBAoDG;InF8gbP;ImFt7aA;MA5II,kBAoDG;InFihbP;ImFz7aA;MA5II,gBAoDG;InFohbP;ImF57aA;MA5II,oBAoDG;InFuhbP;ImF/7aA;MA5II,0BAoDG;InF0hbP;ImFl8aA;MA5II,yBAoDG;InF6hbP;ImFr8aA;MA5II,0BAoDG;InFgibP;ImFx8aA;MA5II,uBAoDG;InFmibP;ImF38aA;MA5II,0BAoDG;InFsibP;ImF98aA;MA5II,yBAoDG;InFyibP;ImFj9aA;MA5II,uBAoDG;InF4ibP;ImFp9aA;MA5II,yBAoDG;InF+ibP;ImFv9aA;MA5II,uBAoDG;InFkjbP;ImF19aA;MA5II,mBAoDG;InFqjbP;ImF79aA;MA5II,yBAoDG;InFwjbP;ImFh+aA;MA5II,wBAoDG;InF2jbP;ImFn+aA;MA5II,yBAoDG;InF8jbP;ImFt+aA;MA5II,sBAoDG;InFikbP;ImFz+aA;MA5II,yBAoDG;InFokbP;ImF5+aA;MA5II,wBAoDG;InFukbP;ImF/+aA;MA5II,sBAoDG;InF0kbP;ImFl/aA;MA5II,wBAoDG;InF6kbP;ImFr/aA;MA5II,sBAoDG;InFglbP;ImFx/aA;MA5II,yFAoDG;InFmlbP;ImF3/aA;MA5II,sBAoDG;InFslbP;ImF9/aA;MA5II,wFAoDG;InFylbP;ImFjgbA;MA5II,qBAoDG;InF4lbP;ImFpgbA;MA5II,iBAoDG;InF+lbP;ImFvgbA;MA5II,eAoDG;InFkmbP;ImF1gbA;MA5II,kBAoDG;InFqmbP;EACF;EW1nbE;IwE4GA;MA5II,mBAoDG;InF0mbP;ImFlhbA;MA5II,iBAoDG;InF6mbP;ImFrhbA;MA5II,WAoDG;InFgnbP;ImFxhbA;MA5II,mBAoDG;InFmnbP;ImF3hbA;MA5II,iBAoDG;InFsnbP;ImF9hbA;MA5II,gBAoDG;InFynbP;ImFjibA;MA5II,sBAoDG;InF4nbP;ImFpibA;MA5II,gBAoDG;InF+nbP;ImFvibA;MA5II,eAyDO;InF6nbX;ImF1ibA;MA5II,qBAyDO;InFgobX;ImF7ibA;MA5II,cAyDO;InFmobX;ImFhjbA;MA5II,aAyDO;InFsobX;ImFnjbA;MA5II,oBAyDO;InFyobX;ImFtjbA;MA5II,cAyDO;InF4obX;ImFzjbA;MA5II,kBAyDO;InF+obX;ImF5jbA;MA5II,mBAyDO;InFkpbX;ImF/jbA;MA5II,aAyDO;InFqpbX;ImFlkbA;MA5II,oBAyDO;InFwpbX;ImFrkbA;MA5II,iBAyDO;InF2pbX;ImFxkbA;MA5II,kBAyDO;InF8pbX;ImF3kbA;MA5II,aAyDO;InFiqbX;ImF9kbA;MA5II,cAoDG;InFyqbP;ImFjlbA;MA5II,mBAyDO;InFuqbX;ImFplbA;MA5II,sBAyDO;InF0qbX;ImFvlbA;MA5II,2BAyDO;InF6qbX;ImF1lbA;MA5II,8BAyDO;InFgrbX;ImF7lbA;MA5II,YAoDG;InFwrbP;ImFhmbA;MA5II,YAoDG;InF2rbP;ImFnmbA;MA5II,cAoDG;InF8rbP;ImFtmbA;MA5II,cAoDG;InFisbP;ImFzmbA;MA5II,eAyDO;InF+rbX;ImF5mbA;MA5II,iBAyDO;InFksbX;ImF/mbA;MA5II,uBAyDO;InFqsbX;ImFlnbA;MA5II,2BAoDG;InF6sbP;ImFrnbA;MA5II,yBAoDG;InFgtbP;ImFxnbA;MA5II,uBAoDG;InFmtbP;ImF3nbA;MA5II,8BAoDG;InFstbP;ImF9nbA;MA5II,6BAoDG;InFytbP;ImFjobA;MA5II,6BAoDG;InF4tbP;ImFpobA;MA5II,oBAoDG;InF+tbP;ImFvobA;MA5II,kBAoDG;InFkubP;ImF1obA;MA5II,qBAoDG;InFqubP;ImF7obA;MA5II,sBAoDG;InFwubP;ImFhpbA;MA5II,mBAoDG;InF2ubP;ImFnpbA;MA5II,iBAoDG;InF8ubP;ImFtpbA;MA5II,oBAoDG;InFivbP;ImFzpbA;MA5II,uBAoDG;InFovbP;ImF5pbA;MA5II,qBAoDG;InFuvbP;ImF/pbA;MA5II,mBAoDG;InF0vbP;ImFlqbA;MA5II,qBAoDG;InF6vbP;ImFrqbA;MA5II,oBAoDG;InFgwbP;ImFxqbA;MA5II,yBAoDG;InFmwbP;ImF3qbA;MA5II,uBAoDG;InFswbP;ImF9qbA;MA5II,qBAoDG;InFywbP;ImFjrbA;MA5II,4BAoDG;InF4wbP;ImFprbA;MA5II,2BAoDG;InF+wbP;ImFvrbA;MA5II,sBAoDG;InFkxbP;ImF1rbA;MA5II,gBAoDG;InFqxbP;ImF7rbA;MA5II,sBAoDG;InFwxbP;ImFhsbA;MA5II,oBAoDG;InF2xbP;ImFnsbA;MA5II,kBAoDG;InF8xbP;ImFtsbA;MA5II,oBAoDG;InFiybP;ImFzsbA;MA5II,mBAoDG;InFoybP;ImF5sbA;MA5II,kBAoDG;InFuybP;ImF/sbA;MA5II,gBAoDG;InF0ybP;ImFltbA;MA5II,mBAoDG;InF6ybP;ImFrtbA;MA5II,oBAoDG;InFgzbP;ImFxtbA;MA5II,0BAoDG;InFmzbP;ImF3tbA;MA5II,qCAoDG;InFszbP;ImF9tbA;MA5II,qCAoDG;InFyzbP;ImFjubA;MA5II,qCAoDG;InF4zbP;ImFpubA;MA5II,qCAoDG;InF+zbP;ImFvubA;MA5II,mBAoDG;InFk0bP;ImF1ubA;MA5II,mBAyDO;InFg0bX;ImF7ubA;MA5II,sBAyDO;InFm0bX;ImFhvbA;MA5II,qBAyDO;InFs0bX;ImFnvbA;MA5II,SAoDG;InF80bP;ImFtvbA;MA5II,QAoDG;InFi1bP;ImFzvbA;MA5II,QAoDG;InFo1bP;ImF5vbA;MA5II,QAoDG;InFu1bP;ImF/vbA;MA5II,QAoDG;InF01bP;ImFlwbA;MA5II,QAoDG;InF61bP;ImFrwbA;MA5II,QAoDG;InFg2bP;ImFxwbA;MA5II,QAoDG;InFm2bP;ImF3wbA;MA5II,SAoDG;InFs2bP;ImF9wbA;MA5II,eAoDG;InFy2bP;ImFjxbA;MA5II,cAoDG;InF42bP;ImFpxbA;MA5II,eAoDG;InF+2bP;ImFvxbA;MA5II,YAoDG;InFk3bP;ImF1xbA;MA5II,eAoDG;InFq3bP;ImF7xbA;MA5II,cAoDG;InFw3bP;ImFhybA;MA5II,YAoDG;InF23bP;ImFnybA;MA5II,cAoDG;InF83bP;ImFtybA;MA5II,YAoDG;InFi4bP;ImFzybA;MA5II,YAoDG;InFo4bP;ImF5ybA;MA5II,gBAoDG;InFu4bP;ImF/ybA;MA5II,sBAoDG;InF04bP;ImFlzbA;MA5II,qBAoDG;InF64bP;ImFrzbA;MA5II,sBAoDG;InFg5bP;ImFxzbA;MA5II,mBAoDG;InFm5bP;ImF3zbA;MA5II,sBAoDG;InFs5bP;ImF9zbA;MA5II,qBAoDG;InFy5bP;ImFj0bA;MA5II,mBAoDG;InF45bP;ImFp0bA;MA5II,qBAoDG;InF+5bP;ImFv0bA;MA5II,mBAoDG;InFk6bP;ImF10bA;MA5II,mBAoDG;InFq6bP;ImF70bA;MA5II,eAoDG;InFw6bP;ImFh1bA;MA5II,qBAoDG;InF26bP;ImFn1bA;MA5II,oBAoDG;InF86bP;ImFt1bA;MA5II,qBAoDG;InFi7bP;ImFz1bA;MA5II,kBAoDG;InFo7bP;ImF51bA;MA5II,qBAoDG;InFu7bP;ImF/1bA;MA5II,oBAoDG;InF07bP;ImFl2bA;MA5II,kBAoDG;InF67bP;ImFr2bA;MA5II,oBAoDG;InFg8bP;ImFx2bA;MA5II,kBAoDG;InFm8bP;ImF32bA;MA5II,kBAoDG;InFs8bP;ImF92bA;MA5II,qBAoDG;InFy8bP;ImFj3bA;MA5II,2BAoDG;InF48bP;ImFp3bA;MA5II,0BAoDG;InF+8bP;ImFv3bA;MA5II,2BAoDG;InFk9bP;ImF13bA;MA5II,wBAoDG;InFq9bP;ImF73bA;MA5II,2BAoDG;InFw9bP;ImFh4bA;MA5II,0BAoDG;InF29bP;ImFn4bA;MA5II,wBAoDG;InF89bP;ImFt4bA;MA5II,0BAoDG;InFi+bP;ImFz4bA;MA5II,wBAoDG;InFo+bP;ImF54bA;MA5II,wBAoDG;InFu+bP;ImF/4bA;MA5II,oBAoDG;InF0+bP;ImFl5bA;MA5II,0BAoDG;InF6+bP;ImFr5bA;MA5II,yBAoDG;InFg/bP;ImFx5bA;MA5II,0BAoDG;InFm/bP;ImF35bA;MA5II,uBAoDG;InFs/bP;ImF95bA;MA5II,0BAoDG;InFy/bP;ImFj6bA;MA5II,yBAoDG;InF4/bP;ImFp6bA;MA5II,uBAoDG;InF+/bP;ImFv6bA;MA5II,yBAoDG;InFkgcP;ImF16bA;MA5II,uBAoDG;InFqgcP;ImF76bA;MA5II,2BAoDG;InFwgcP;ImFh7bA;MA5II,0BAoDG;InF2gcP;ImFn7bA;MA5II,uBAoDG;InF8gcP;ImFt7bA;MA5II,mBAoDG;InFihcP;ImFz7bA;MA5II,yBAoDG;InFohcP;ImF57bA;MA5II,wBAoDG;InFuhcP;ImF/7bA;MA5II,yBAoDG;InF0hcP;ImFl8bA;MA5II,sBAoDG;InF6hcP;ImFr8bA;MA5II,yBAoDG;InFgicP;ImFx8bA;MA5II,wBAoDG;InFmicP;ImF38bA;MA5II,sBAoDG;InFsicP;ImF98bA;MA5II,wBAoDG;InFyicP;ImFj9bA;MA5II,sBAoDG;InF4icP;ImFp9bA;MA5II,sBAoDG;InF+icP;ImFv9bA;MA5II,sBAoDG;InFkjcP;ImF19bA;MA5II,4BAoDG;InFqjcP;ImF79bA;MA5II,2BAoDG;InFwjcP;ImFh+bA;MA5II,4BAoDG;InF2jcP;ImFn+bA;MA5II,yBAoDG;InF8jcP;ImFt+bA;MA5II,4BAoDG;InFikcP;ImFz+bA;MA5II,2BAoDG;InFokcP;ImF5+bA;MA5II,yBAoDG;InFukcP;ImF/+bA;MA5II,2BAoDG;InF0kcP;ImFl/bA;MA5II,yBAoDG;InF6kcP;ImFr/bA;MA5II,6BAoDG;InFglcP;ImFx/bA;MA5II,4BAoDG;InFmlcP;ImF3/bA;MA5II,yBAoDG;InFslcP;ImF9/bA;MA5II,UAoDG;InFylcP;ImFjgcA;MA5II,gBAoDG;InF4lcP;ImFpgcA;MA5II,eAoDG;InF+lcP;ImFvgcA;MA5II,gBAoDG;InFkmcP;ImF1gcA;MA5II,aAoDG;InFqmcP;ImF7gcA;MA5II,gBAoDG;InFwmcP;ImFhhcA;MA5II,eAoDG;InF2mcP;ImFnhcA;MA5II,aAoDG;InF8mcP;ImFthcA;MA5II,eAoDG;InFincP;ImFzhcA;MA5II,aAoDG;InFoncP;ImF5hcA;MA5II,iBAoDG;InFuncP;ImF/hcA;MA5II,uBAoDG;InF0ncP;ImFlicA;MA5II,sBAoDG;InF6ncP;ImFricA;MA5II,uBAoDG;InFgocP;ImFxicA;MA5II,oBAoDG;InFmocP;ImF3icA;MA5II,uBAoDG;InFsocP;ImF9icA;MA5II,sBAoDG;InFyocP;ImFjjcA;MA5II,oBAoDG;InF4ocP;ImFpjcA;MA5II,sBAoDG;InF+ocP;ImFvjcA;MA5II,oBAoDG;InFkpcP;ImF1jcA;MA5II,gBAoDG;InFqpcP;ImF7jcA;MA5II,sBAoDG;InFwpcP;ImFhkcA;MA5II,qBAoDG;InF2pcP;ImFnkcA;MA5II,sBAoDG;InF8pcP;ImFtkcA;MA5II,mBAoDG;InFiqcP;ImFzkcA;MA5II,sBAoDG;InFoqcP;ImF5kcA;MA5II,qBAoDG;InFuqcP;ImF/kcA;MA5II,mBAoDG;InF0qcP;ImFllcA;MA5II,qBAoDG;InF6qcP;ImFrlcA;MA5II,mBAoDG;InFgrcP;ImFxlcA;MA5II,sBAoDG;InFmrcP;ImF3lcA;MA5II,4BAoDG;InFsrcP;ImF9lcA;MA5II,2BAoDG;InFyrcP;ImFjmcA;MA5II,4BAoDG;InF4rcP;ImFpmcA;MA5II,yBAoDG;InF+rcP;ImFvmcA;MA5II,4BAoDG;InFkscP;ImF1mcA;MA5II,2BAoDG;InFqscP;ImF7mcA;MA5II,yBAoDG;InFwscP;ImFhncA;MA5II,2BAoDG;InF2scP;ImFnncA;MA5II,yBAoDG;InF8scP;ImFtncA;MA5II,qBAoDG;InFitcP;ImFzncA;MA5II,2BAoDG;InFotcP;ImF5ncA;MA5II,0BAoDG;InFutcP;ImF/ncA;MA5II,2BAoDG;InF0tcP;ImFlocA;MA5II,wBAoDG;InF6tcP;ImFrocA;MA5II,2BAoDG;InFgucP;ImFxocA;MA5II,0BAoDG;InFmucP;ImF3ocA;MA5II,wBAoDG;InFsucP;ImF9ocA;MA5II,0BAoDG;InFyucP;ImFjpcA;MA5II,wBAoDG;InF4ucP;ImFppcA;MA5II,oBAoDG;InF+ucP;ImFvpcA;MA5II,0BAoDG;InFkvcP;ImF1pcA;MA5II,yBAoDG;InFqvcP;ImF7pcA;MA5II,0BAoDG;InFwvcP;ImFhqcA;MA5II,uBAoDG;InF2vcP;ImFnqcA;MA5II,0BAoDG;InF8vcP;ImFtqcA;MA5II,yBAoDG;InFiwcP;ImFzqcA;MA5II,uBAoDG;InFowcP;ImF5qcA;MA5II,yBAoDG;InFuwcP;ImF/qcA;MA5II,uBAoDG;InF0wcP;ImFlrcA;MA5II,uBAoDG;InF6wcP;ImFrrcA;MA5II,6BAoDG;InFgxcP;ImFxrcA;MA5II,4BAoDG;InFmxcP;ImF3rcA;MA5II,6BAoDG;InFsxcP;ImF9rcA;MA5II,0BAoDG;InFyxcP;ImFjscA;MA5II,6BAoDG;InF4xcP;ImFpscA;MA5II,4BAoDG;InF+xcP;ImFvscA;MA5II,0BAoDG;InFkycP;ImF1scA;MA5II,4BAoDG;InFqycP;ImF7scA;MA5II,0BAoDG;InFwycP;ImFhtcA;MA5II,MAoDG;InF2ycP;ImFntcA;MA5II,YAoDG;InF8ycP;ImFttcA;MA5II,WAoDG;InFizcP;ImFztcA;MA5II,YAoDG;InFozcP;ImF5tcA;MA5II,SAoDG;InFuzcP;ImF/tcA;MA5II,YAoDG;InF0zcP;ImFlucA;MA5II,WAoDG;InF6zcP;ImFrucA;MA5II,SAoDG;InFg0cP;ImFxucA;MA5II,WAoDG;InFm0cP;ImF3ucA;MA5II,SAoDG;InFs0cP;ImF9ucA;MA5II,UAoDG;InFy0cP;ImFjvcA;MA5II,gBAoDG;InF40cP;ImFpvcA;MA5II,eAoDG;InF+0cP;ImFvvcA;MA5II,gBAoDG;InFk1cP;ImF1vcA;MA5II,aAoDG;InFq1cP;ImF7vcA;MA5II,gBAoDG;InFw1cP;ImFhwcA;MA5II,eAoDG;InF21cP;ImFnwcA;MA5II,aAoDG;InF81cP;ImFtwcA;MA5II,eAoDG;InFi2cP;ImFzwcA;MA5II,aAoDG;InFo2cP;ImF5wcA;MA5II,aAoDG;InFu2cP;ImF/wcA;MA5II,mBAoDG;InF02cP;ImFlxcA;MA5II,kBAoDG;InF62cP;ImFrxcA;MA5II,mBAoDG;InFg3cP;ImFxxcA;MA5II,gBAoDG;InFm3cP;ImF3xcA;MA5II,mBAoDG;InFs3cP;ImF9xcA;MA5II,kBAoDG;InFy3cP;ImFjycA;MA5II,gBAoDG;InF43cP;ImFpycA;MA5II,kBAoDG;InF+3cP;ImFvycA;MA5II,gBAoDG;InFk4cP;ImF1ycA;MA5II,oBAoDG;InFq4cP;ImF7ycA;MA5II,0BAoDG;InFw4cP;ImFhzcA;MA5II,yBAoDG;InF24cP;ImFnzcA;MA5II,0BAoDG;InF84cP;ImFtzcA;MA5II,uBAoDG;InFi5cP;ImFzzcA;MA5II,0BAoDG;InFo5cP;ImF5zcA;MA5II,yBAoDG;InFu5cP;ImF/zcA;MA5II,uBAoDG;InF05cP;ImFl0cA;MA5II,yBAoDG;InF65cP;ImFr0cA;MA5II,uBAoDG;InFg6cP;ImFx0cA;MA5II,mBAoDG;InFm6cP;ImF30cA;MA5II,yBAoDG;InFs6cP;ImF90cA;MA5II,wBAoDG;InFy6cP;ImFj1cA;MA5II,yBAoDG;InF46cP;ImFp1cA;MA5II,sBAoDG;InF+6cP;ImFv1cA;MA5II,yBAoDG;InFk7cP;ImF11cA;MA5II,wBAoDG;InFq7cP;ImF71cA;MA5II,sBAoDG;InFw7cP;ImFh2cA;MA5II,wBAoDG;InF27cP;ImFn2cA;MA5II,sBAoDG;InF87cP;ImFt2cA;MA5II,yFAoDG;InFi8cP;ImFz2cA;MA5II,sBAoDG;InFo8cP;ImF52cA;MA5II,wFAoDG;InFu8cP;ImF/2cA;MA5II,qBAoDG;InF08cP;ImFl3cA;MA5II,iBAoDG;InF68cP;ImFr3cA;MA5II,eAoDG;InFg9cP;ImFx3cA;MA5II,kBAoDG;InFm9cP;EACF;EWx+cE;IwE4GA;MA5II,mBAoDG;InFw9cP;ImFh4cA;MA5II,iBAoDG;InF29cP;ImFn4cA;MA5II,WAoDG;InF89cP;ImFt4cA;MA5II,mBAoDG;InFi+cP;ImFz4cA;MA5II,iBAoDG;InFo+cP;ImF54cA;MA5II,gBAoDG;InFu+cP;ImF/4cA;MA5II,sBAoDG;InF0+cP;ImFl5cA;MA5II,gBAoDG;InF6+cP;ImFr5cA;MA5II,eAyDO;InF2+cX;ImFx5cA;MA5II,qBAyDO;InF8+cX;ImF35cA;MA5II,cAyDO;InFi/cX;ImF95cA;MA5II,aAyDO;InFo/cX;ImFj6cA;MA5II,oBAyDO;InFu/cX;ImFp6cA;MA5II,cAyDO;InF0/cX;ImFv6cA;MA5II,kBAyDO;InF6/cX;ImF16cA;MA5II,mBAyDO;InFggdX;ImF76cA;MA5II,aAyDO;InFmgdX;ImFh7cA;MA5II,oBAyDO;InFsgdX;ImFn7cA;MA5II,iBAyDO;InFygdX;ImFt7cA;MA5II,kBAyDO;InF4gdX;ImFz7cA;MA5II,aAyDO;InF+gdX;ImF57cA;MA5II,cAoDG;InFuhdP;ImF/7cA;MA5II,mBAyDO;InFqhdX;ImFl8cA;MA5II,sBAyDO;InFwhdX;ImFr8cA;MA5II,2BAyDO;InF2hdX;ImFx8cA;MA5II,8BAyDO;InF8hdX;ImF38cA;MA5II,YAoDG;InFsidP;ImF98cA;MA5II,YAoDG;InFyidP;ImFj9cA;MA5II,cAoDG;InF4idP;ImFp9cA;MA5II,cAoDG;InF+idP;ImFv9cA;MA5II,eAyDO;InF6idX;ImF19cA;MA5II,iBAyDO;InFgjdX;ImF79cA;MA5II,uBAyDO;InFmjdX;ImFh+cA;MA5II,2BAoDG;InF2jdP;ImFn+cA;MA5II,yBAoDG;InF8jdP;ImFt+cA;MA5II,uBAoDG;InFikdP;ImFz+cA;MA5II,8BAoDG;InFokdP;ImF5+cA;MA5II,6BAoDG;InFukdP;ImF/+cA;MA5II,6BAoDG;InF0kdP;ImFl/cA;MA5II,oBAoDG;InF6kdP;ImFr/cA;MA5II,kBAoDG;InFgldP;ImFx/cA;MA5II,qBAoDG;InFmldP;ImF3/cA;MA5II,sBAoDG;InFsldP;ImF9/cA;MA5II,mBAoDG;InFyldP;ImFjgdA;MA5II,iBAoDG;InF4ldP;ImFpgdA;MA5II,oBAoDG;InF+ldP;ImFvgdA;MA5II,uBAoDG;InFkmdP;ImF1gdA;MA5II,qBAoDG;InFqmdP;ImF7gdA;MA5II,mBAoDG;InFwmdP;ImFhhdA;MA5II,qBAoDG;InF2mdP;ImFnhdA;MA5II,oBAoDG;InF8mdP;ImFthdA;MA5II,yBAoDG;InFindP;ImFzhdA;MA5II,uBAoDG;InFondP;ImF5hdA;MA5II,qBAoDG;InFundP;ImF/hdA;MA5II,4BAoDG;InF0ndP;ImFlidA;MA5II,2BAoDG;InF6ndP;ImFridA;MA5II,sBAoDG;InFgodP;ImFxidA;MA5II,gBAoDG;InFmodP;ImF3idA;MA5II,sBAoDG;InFsodP;ImF9idA;MA5II,oBAoDG;InFyodP;ImFjjdA;MA5II,kBAoDG;InF4odP;ImFpjdA;MA5II,oBAoDG;InF+odP;ImFvjdA;MA5II,mBAoDG;InFkpdP;ImF1jdA;MA5II,kBAoDG;InFqpdP;ImF7jdA;MA5II,gBAoDG;InFwpdP;ImFhkdA;MA5II,mBAoDG;InF2pdP;ImFnkdA;MA5II,oBAoDG;InF8pdP;ImFtkdA;MA5II,0BAoDG;InFiqdP;ImFzkdA;MA5II,qCAoDG;InFoqdP;ImF5kdA;MA5II,qCAoDG;InFuqdP;ImF/kdA;MA5II,qCAoDG;InF0qdP;ImFlldA;MA5II,qCAoDG;InF6qdP;ImFrldA;MA5II,mBAoDG;InFgrdP;ImFxldA;MA5II,mBAyDO;InF8qdX;ImF3ldA;MA5II,sBAyDO;InFirdX;ImF9ldA;MA5II,qBAyDO;InFordX;ImFjmdA;MA5II,SAoDG;InF4rdP;ImFpmdA;MA5II,QAoDG;InF+rdP;ImFvmdA;MA5II,QAoDG;InFksdP;ImF1mdA;MA5II,QAoDG;InFqsdP;ImF7mdA;MA5II,QAoDG;InFwsdP;ImFhndA;MA5II,QAoDG;InF2sdP;ImFnndA;MA5II,QAoDG;InF8sdP;ImFtndA;MA5II,QAoDG;InFitdP;ImFzndA;MA5II,SAoDG;InFotdP;ImF5ndA;MA5II,eAoDG;InFutdP;ImF/ndA;MA5II,cAoDG;InF0tdP;ImFlodA;MA5II,eAoDG;InF6tdP;ImFrodA;MA5II,YAoDG;InFgudP;ImFxodA;MA5II,eAoDG;InFmudP;ImF3odA;MA5II,cAoDG;InFsudP;ImF9odA;MA5II,YAoDG;InFyudP;ImFjpdA;MA5II,cAoDG;InF4udP;ImFppdA;MA5II,YAoDG;InF+udP;ImFvpdA;MA5II,YAoDG;InFkvdP;ImF1pdA;MA5II,gBAoDG;InFqvdP;ImF7pdA;MA5II,sBAoDG;InFwvdP;ImFhqdA;MA5II,qBAoDG;InF2vdP;ImFnqdA;MA5II,sBAoDG;InF8vdP;ImFtqdA;MA5II,mBAoDG;InFiwdP;ImFzqdA;MA5II,sBAoDG;InFowdP;ImF5qdA;MA5II,qBAoDG;InFuwdP;ImF/qdA;MA5II,mBAoDG;InF0wdP;ImFlrdA;MA5II,qBAoDG;InF6wdP;ImFrrdA;MA5II,mBAoDG;InFgxdP;ImFxrdA;MA5II,mBAoDG;InFmxdP;ImF3rdA;MA5II,eAoDG;InFsxdP;ImF9rdA;MA5II,qBAoDG;InFyxdP;ImFjsdA;MA5II,oBAoDG;InF4xdP;ImFpsdA;MA5II,qBAoDG;InF+xdP;ImFvsdA;MA5II,kBAoDG;InFkydP;ImF1sdA;MA5II,qBAoDG;InFqydP;ImF7sdA;MA5II,oBAoDG;InFwydP;ImFhtdA;MA5II,kBAoDG;InF2ydP;ImFntdA;MA5II,oBAoDG;InF8ydP;ImFttdA;MA5II,kBAoDG;InFizdP;ImFztdA;MA5II,kBAoDG;InFozdP;ImF5tdA;MA5II,qBAoDG;InFuzdP;ImF/tdA;MA5II,2BAoDG;InF0zdP;ImFludA;MA5II,0BAoDG;InF6zdP;ImFrudA;MA5II,2BAoDG;InFg0dP;ImFxudA;MA5II,wBAoDG;InFm0dP;ImF3udA;MA5II,2BAoDG;InFs0dP;ImF9udA;MA5II,0BAoDG;InFy0dP;ImFjvdA;MA5II,wBAoDG;InF40dP;ImFpvdA;MA5II,0BAoDG;InF+0dP;ImFvvdA;MA5II,wBAoDG;InFk1dP;ImF1vdA;MA5II,wBAoDG;InFq1dP;ImF7vdA;MA5II,oBAoDG;InFw1dP;ImFhwdA;MA5II,0BAoDG;InF21dP;ImFnwdA;MA5II,yBAoDG;InF81dP;ImFtwdA;MA5II,0BAoDG;InFi2dP;ImFzwdA;MA5II,uBAoDG;InFo2dP;ImF5wdA;MA5II,0BAoDG;InFu2dP;ImF/wdA;MA5II,yBAoDG;InF02dP;ImFlxdA;MA5II,uBAoDG;InF62dP;ImFrxdA;MA5II,yBAoDG;InFg3dP;ImFxxdA;MA5II,uBAoDG;InFm3dP;ImF3xdA;MA5II,2BAoDG;InFs3dP;ImF9xdA;MA5II,0BAoDG;InFy3dP;ImFjydA;MA5II,uBAoDG;InF43dP;ImFpydA;MA5II,mBAoDG;InF+3dP;ImFvydA;MA5II,yBAoDG;InFk4dP;ImF1ydA;MA5II,wBAoDG;InFq4dP;ImF7ydA;MA5II,yBAoDG;InFw4dP;ImFhzdA;MA5II,sBAoDG;InF24dP;ImFnzdA;MA5II,yBAoDG;InF84dP;ImFtzdA;MA5II,wBAoDG;InFi5dP;ImFzzdA;MA5II,sBAoDG;InFo5dP;ImF5zdA;MA5II,wBAoDG;InFu5dP;ImF/zdA;MA5II,sBAoDG;InF05dP;ImFl0dA;MA5II,sBAoDG;InF65dP;ImFr0dA;MA5II,sBAoDG;InFg6dP;ImFx0dA;MA5II,4BAoDG;InFm6dP;ImF30dA;MA5II,2BAoDG;InFs6dP;ImF90dA;MA5II,4BAoDG;InFy6dP;ImFj1dA;MA5II,yBAoDG;InF46dP;ImFp1dA;MA5II,4BAoDG;InF+6dP;ImFv1dA;MA5II,2BAoDG;InFk7dP;ImF11dA;MA5II,yBAoDG;InFq7dP;ImF71dA;MA5II,2BAoDG;InFw7dP;ImFh2dA;MA5II,yBAoDG;InF27dP;ImFn2dA;MA5II,6BAoDG;InF87dP;ImFt2dA;MA5II,4BAoDG;InFi8dP;ImFz2dA;MA5II,yBAoDG;InFo8dP;ImF52dA;MA5II,UAoDG;InFu8dP;ImF/2dA;MA5II,gBAoDG;InF08dP;ImFl3dA;MA5II,eAoDG;InF68dP;ImFr3dA;MA5II,gBAoDG;InFg9dP;ImFx3dA;MA5II,aAoDG;InFm9dP;ImF33dA;MA5II,gBAoDG;InFs9dP;ImF93dA;MA5II,eAoDG;InFy9dP;ImFj4dA;MA5II,aAoDG;InF49dP;ImFp4dA;MA5II,eAoDG;InF+9dP;ImFv4dA;MA5II,aAoDG;InFk+dP;ImF14dA;MA5II,iBAoDG;InFq+dP;ImF74dA;MA5II,uBAoDG;InFw+dP;ImFh5dA;MA5II,sBAoDG;InF2+dP;ImFn5dA;MA5II,uBAoDG;InF8+dP;ImFt5dA;MA5II,oBAoDG;InFi/dP;ImFz5dA;MA5II,uBAoDG;InFo/dP;ImF55dA;MA5II,sBAoDG;InFu/dP;ImF/5dA;MA5II,oBAoDG;InF0/dP;ImFl6dA;MA5II,sBAoDG;InF6/dP;ImFr6dA;MA5II,oBAoDG;InFggeP;ImFx6dA;MA5II,gBAoDG;InFmgeP;ImF36dA;MA5II,sBAoDG;InFsgeP;ImF96dA;MA5II,qBAoDG;InFygeP;ImFj7dA;MA5II,sBAoDG;InF4geP;ImFp7dA;MA5II,mBAoDG;InF+geP;ImFv7dA;MA5II,sBAoDG;InFkheP;ImF17dA;MA5II,qBAoDG;InFqheP;ImF77dA;MA5II,mBAoDG;InFwheP;ImFh8dA;MA5II,qBAoDG;InF2heP;ImFn8dA;MA5II,mBAoDG;InF8heP;ImFt8dA;MA5II,sBAoDG;InFiieP;ImFz8dA;MA5II,4BAoDG;InFoieP;ImF58dA;MA5II,2BAoDG;InFuieP;ImF/8dA;MA5II,4BAoDG;InF0ieP;ImFl9dA;MA5II,yBAoDG;InF6ieP;ImFr9dA;MA5II,4BAoDG;InFgjeP;ImFx9dA;MA5II,2BAoDG;InFmjeP;ImF39dA;MA5II,yBAoDG;InFsjeP;ImF99dA;MA5II,2BAoDG;InFyjeP;ImFj+dA;MA5II,yBAoDG;InF4jeP;ImFp+dA;MA5II,qBAoDG;InF+jeP;ImFv+dA;MA5II,2BAoDG;InFkkeP;ImF1+dA;MA5II,0BAoDG;InFqkeP;ImF7+dA;MA5II,2BAoDG;InFwkeP;ImFh/dA;MA5II,wBAoDG;InF2keP;ImFn/dA;MA5II,2BAoDG;InF8keP;ImFt/dA;MA5II,0BAoDG;InFileP;ImFz/dA;MA5II,wBAoDG;InFoleP;ImF5/dA;MA5II,0BAoDG;InFuleP;ImF//dA;MA5II,wBAoDG;InF0leP;ImFlgeA;MA5II,oBAoDG;InF6leP;ImFrgeA;MA5II,0BAoDG;InFgmeP;ImFxgeA;MA5II,yBAoDG;InFmmeP;ImF3geA;MA5II,0BAoDG;InFsmeP;ImF9geA;MA5II,uBAoDG;InFymeP;ImFjheA;MA5II,0BAoDG;InF4meP;ImFpheA;MA5II,yBAoDG;InF+meP;ImFvheA;MA5II,uBAoDG;InFkneP;ImF1heA;MA5II,yBAoDG;InFqneP;ImF7heA;MA5II,uBAoDG;InFwneP;ImFhieA;MA5II,uBAoDG;InF2neP;ImFnieA;MA5II,6BAoDG;InF8neP;ImFtieA;MA5II,4BAoDG;InFioeP;ImFzieA;MA5II,6BAoDG;InFooeP;ImF5ieA;MA5II,0BAoDG;InFuoeP;ImF/ieA;MA5II,6BAoDG;InF0oeP;ImFljeA;MA5II,4BAoDG;InF6oeP;ImFrjeA;MA5II,0BAoDG;InFgpeP;ImFxjeA;MA5II,4BAoDG;InFmpeP;ImF3jeA;MA5II,0BAoDG;InFspeP;ImF9jeA;MA5II,MAoDG;InFypeP;ImFjkeA;MA5II,YAoDG;InF4peP;ImFpkeA;MA5II,WAoDG;InF+peP;ImFvkeA;MA5II,YAoDG;InFkqeP;ImF1keA;MA5II,SAoDG;InFqqeP;ImF7keA;MA5II,YAoDG;InFwqeP;ImFhleA;MA5II,WAoDG;InF2qeP;ImFnleA;MA5II,SAoDG;InF8qeP;ImFtleA;MA5II,WAoDG;InFireP;ImFzleA;MA5II,SAoDG;InForeP;ImF5leA;MA5II,UAoDG;InFureP;ImF/leA;MA5II,gBAoDG;InF0reP;ImFlmeA;MA5II,eAoDG;InF6reP;ImFrmeA;MA5II,gBAoDG;InFgseP;ImFxmeA;MA5II,aAoDG;InFmseP;ImF3meA;MA5II,gBAoDG;InFsseP;ImF9meA;MA5II,eAoDG;InFyseP;ImFjneA;MA5II,aAoDG;InF4seP;ImFpneA;MA5II,eAoDG;InF+seP;ImFvneA;MA5II,aAoDG;InFkteP;ImF1neA;MA5II,aAoDG;InFqteP;ImF7neA;MA5II,mBAoDG;InFwteP;ImFhoeA;MA5II,kBAoDG;InF2teP;ImFnoeA;MA5II,mBAoDG;InF8teP;ImFtoeA;MA5II,gBAoDG;InFiueP;ImFzoeA;MA5II,mBAoDG;InFoueP;ImF5oeA;MA5II,kBAoDG;InFuueP;ImF/oeA;MA5II,gBAoDG;InF0ueP;ImFlpeA;MA5II,kBAoDG;InF6ueP;ImFrpeA;MA5II,gBAoDG;InFgveP;ImFxpeA;MA5II,oBAoDG;InFmveP;ImF3peA;MA5II,0BAoDG;InFsveP;ImF9peA;MA5II,yBAoDG;InFyveP;ImFjqeA;MA5II,0BAoDG;InF4veP;ImFpqeA;MA5II,uBAoDG;InF+veP;ImFvqeA;MA5II,0BAoDG;InFkweP;ImF1qeA;MA5II,yBAoDG;InFqweP;ImF7qeA;MA5II,uBAoDG;InFwweP;ImFhreA;MA5II,yBAoDG;InF2weP;ImFnreA;MA5II,uBAoDG;InF8weP;ImFtreA;MA5II,mBAoDG;InFixeP;ImFzreA;MA5II,yBAoDG;InFoxeP;ImF5reA;MA5II,wBAoDG;InFuxeP;ImF/reA;MA5II,yBAoDG;InF0xeP;ImFlseA;MA5II,sBAoDG;InF6xeP;ImFrseA;MA5II,yBAoDG;InFgyeP;ImFxseA;MA5II,wBAoDG;InFmyeP;ImF3seA;MA5II,sBAoDG;InFsyeP;ImF9seA;MA5II,wBAoDG;InFyyeP;ImFjteA;MA5II,sBAoDG;InF4yeP;ImFpteA;MA5II,yFAoDG;InF+yeP;ImFvteA;MA5II,sBAoDG;InFkzeP;ImF1teA;MA5II,wFAoDG;InFqzeP;ImF7teA;MA5II,qBAoDG;InFwzeP;ImFhueA;MA5II,iBAoDG;InF2zeP;ImFnueA;MA5II,eAoDG;InF8zeP;ImFtueA;MA5II,kBAoDG;InFi0eP;EACF;EWt1eE;IwE4GA;MA5II,mBAoDG;InFs0eP;ImF9ueA;MA5II,iBAoDG;InFy0eP;ImFjveA;MA5II,WAoDG;InF40eP;ImFpveA;MA5II,mBAoDG;InF+0eP;ImFvveA;MA5II,iBAoDG;InFk1eP;ImF1veA;MA5II,gBAoDG;InFq1eP;ImF7veA;MA5II,sBAoDG;InFw1eP;ImFhweA;MA5II,gBAoDG;InF21eP;ImFnweA;MA5II,eAyDO;InFy1eX;ImFtweA;MA5II,qBAyDO;InF41eX;ImFzweA;MA5II,cAyDO;InF+1eX;ImF5weA;MA5II,aAyDO;InFk2eX;ImF/weA;MA5II,oBAyDO;InFq2eX;ImFlxeA;MA5II,cAyDO;InFw2eX;ImFrxeA;MA5II,kBAyDO;InF22eX;ImFxxeA;MA5II,mBAyDO;InF82eX;ImF3xeA;MA5II,aAyDO;InFi3eX;ImF9xeA;MA5II,oBAyDO;InFo3eX;ImFjyeA;MA5II,iBAyDO;InFu3eX;ImFpyeA;MA5II,kBAyDO;InF03eX;ImFvyeA;MA5II,aAyDO;InF63eX;ImF1yeA;MA5II,cAoDG;InFq4eP;ImF7yeA;MA5II,mBAyDO;InFm4eX;ImFhzeA;MA5II,sBAyDO;InFs4eX;ImFnzeA;MA5II,2BAyDO;InFy4eX;ImFtzeA;MA5II,8BAyDO;InF44eX;ImFzzeA;MA5II,YAoDG;InFo5eP;ImF5zeA;MA5II,YAoDG;InFu5eP;ImF/zeA;MA5II,cAoDG;InF05eP;ImFl0eA;MA5II,cAoDG;InF65eP;ImFr0eA;MA5II,eAyDO;InF25eX;ImFx0eA;MA5II,iBAyDO;InF85eX;ImF30eA;MA5II,uBAyDO;InFi6eX;ImF90eA;MA5II,2BAoDG;InFy6eP;ImFj1eA;MA5II,yBAoDG;InF46eP;ImFp1eA;MA5II,uBAoDG;InF+6eP;ImFv1eA;MA5II,8BAoDG;InFk7eP;ImF11eA;MA5II,6BAoDG;InFq7eP;ImF71eA;MA5II,6BAoDG;InFw7eP;ImFh2eA;MA5II,oBAoDG;InF27eP;ImFn2eA;MA5II,kBAoDG;InF87eP;ImFt2eA;MA5II,qBAoDG;InFi8eP;ImFz2eA;MA5II,sBAoDG;InFo8eP;ImF52eA;MA5II,mBAoDG;InFu8eP;ImF/2eA;MA5II,iBAoDG;InF08eP;ImFl3eA;MA5II,oBAoDG;InF68eP;ImFr3eA;MA5II,uBAoDG;InFg9eP;ImFx3eA;MA5II,qBAoDG;InFm9eP;ImF33eA;MA5II,mBAoDG;InFs9eP;ImF93eA;MA5II,qBAoDG;InFy9eP;ImFj4eA;MA5II,oBAoDG;InF49eP;ImFp4eA;MA5II,yBAoDG;InF+9eP;ImFv4eA;MA5II,uBAoDG;InFk+eP;ImF14eA;MA5II,qBAoDG;InFq+eP;ImF74eA;MA5II,4BAoDG;InFw+eP;ImFh5eA;MA5II,2BAoDG;InF2+eP;ImFn5eA;MA5II,sBAoDG;InF8+eP;ImFt5eA;MA5II,gBAoDG;InFi/eP;ImFz5eA;MA5II,sBAoDG;InFo/eP;ImF55eA;MA5II,oBAoDG;InFu/eP;ImF/5eA;MA5II,kBAoDG;InF0/eP;ImFl6eA;MA5II,oBAoDG;InF6/eP;ImFr6eA;MA5II,mBAoDG;InFggfP;ImFx6eA;MA5II,kBAoDG;InFmgfP;ImF36eA;MA5II,gBAoDG;InFsgfP;ImF96eA;MA5II,mBAoDG;InFygfP;ImFj7eA;MA5II,oBAoDG;InF4gfP;ImFp7eA;MA5II,0BAoDG;InF+gfP;ImFv7eA;MA5II,qCAoDG;InFkhfP;ImF17eA;MA5II,qCAoDG;InFqhfP;ImF77eA;MA5II,qCAoDG;InFwhfP;ImFh8eA;MA5II,qCAoDG;InF2hfP;ImFn8eA;MA5II,mBAoDG;InF8hfP;ImFt8eA;MA5II,mBAyDO;InF4hfX;ImFz8eA;MA5II,sBAyDO;InF+hfX;ImF58eA;MA5II,qBAyDO;InFkifX;ImF/8eA;MA5II,SAoDG;InF0ifP;ImFl9eA;MA5II,QAoDG;InF6ifP;ImFr9eA;MA5II,QAoDG;InFgjfP;ImFx9eA;MA5II,QAoDG;InFmjfP;ImF39eA;MA5II,QAoDG;InFsjfP;ImF99eA;MA5II,QAoDG;InFyjfP;ImFj+eA;MA5II,QAoDG;InF4jfP;ImFp+eA;MA5II,QAoDG;InF+jfP;ImFv+eA;MA5II,SAoDG;InFkkfP;ImF1+eA;MA5II,eAoDG;InFqkfP;ImF7+eA;MA5II,cAoDG;InFwkfP;ImFh/eA;MA5II,eAoDG;InF2kfP;ImFn/eA;MA5II,YAoDG;InF8kfP;ImFt/eA;MA5II,eAoDG;InFilfP;ImFz/eA;MA5II,cAoDG;InFolfP;ImF5/eA;MA5II,YAoDG;InFulfP;ImF//eA;MA5II,cAoDG;InF0lfP;ImFlgfA;MA5II,YAoDG;InF6lfP;ImFrgfA;MA5II,YAoDG;InFgmfP;ImFxgfA;MA5II,gBAoDG;InFmmfP;ImF3gfA;MA5II,sBAoDG;InFsmfP;ImF9gfA;MA5II,qBAoDG;InFymfP;ImFjhfA;MA5II,sBAoDG;InF4mfP;ImFphfA;MA5II,mBAoDG;InF+mfP;ImFvhfA;MA5II,sBAoDG;InFknfP;ImF1hfA;MA5II,qBAoDG;InFqnfP;ImF7hfA;MA5II,mBAoDG;InFwnfP;ImFhifA;MA5II,qBAoDG;InF2nfP;ImFnifA;MA5II,mBAoDG;InF8nfP;ImFtifA;MA5II,mBAoDG;InFiofP;ImFzifA;MA5II,eAoDG;InFoofP;ImF5ifA;MA5II,qBAoDG;InFuofP;ImF/ifA;MA5II,oBAoDG;InF0ofP;ImFljfA;MA5II,qBAoDG;InF6ofP;ImFrjfA;MA5II,kBAoDG;InFgpfP;ImFxjfA;MA5II,qBAoDG;InFmpfP;ImF3jfA;MA5II,oBAoDG;InFspfP;ImF9jfA;MA5II,kBAoDG;InFypfP;ImFjkfA;MA5II,oBAoDG;InF4pfP;ImFpkfA;MA5II,kBAoDG;InF+pfP;ImFvkfA;MA5II,kBAoDG;InFkqfP;ImF1kfA;MA5II,qBAoDG;InFqqfP;ImF7kfA;MA5II,2BAoDG;InFwqfP;ImFhlfA;MA5II,0BAoDG;InF2qfP;ImFnlfA;MA5II,2BAoDG;InF8qfP;ImFtlfA;MA5II,wBAoDG;InFirfP;ImFzlfA;MA5II,2BAoDG;InForfP;ImF5lfA;MA5II,0BAoDG;InFurfP;ImF/lfA;MA5II,wBAoDG;InF0rfP;ImFlmfA;MA5II,0BAoDG;InF6rfP;ImFrmfA;MA5II,wBAoDG;InFgsfP;ImFxmfA;MA5II,wBAoDG;InFmsfP;ImF3mfA;MA5II,oBAoDG;InFssfP;ImF9mfA;MA5II,0BAoDG;InFysfP;ImFjnfA;MA5II,yBAoDG;InF4sfP;ImFpnfA;MA5II,0BAoDG;InF+sfP;ImFvnfA;MA5II,uBAoDG;InFktfP;ImF1nfA;MA5II,0BAoDG;InFqtfP;ImF7nfA;MA5II,yBAoDG;InFwtfP;ImFhofA;MA5II,uBAoDG;InF2tfP;ImFnofA;MA5II,yBAoDG;InF8tfP;ImFtofA;MA5II,uBAoDG;InFiufP;ImFzofA;MA5II,2BAoDG;InFoufP;ImF5ofA;MA5II,0BAoDG;InFuufP;ImF/ofA;MA5II,uBAoDG;InF0ufP;ImFlpfA;MA5II,mBAoDG;InF6ufP;ImFrpfA;MA5II,yBAoDG;InFgvfP;ImFxpfA;MA5II,wBAoDG;InFmvfP;ImF3pfA;MA5II,yBAoDG;InFsvfP;ImF9pfA;MA5II,sBAoDG;InFyvfP;ImFjqfA;MA5II,yBAoDG;InF4vfP;ImFpqfA;MA5II,wBAoDG;InF+vfP;ImFvqfA;MA5II,sBAoDG;InFkwfP;ImF1qfA;MA5II,wBAoDG;InFqwfP;ImF7qfA;MA5II,sBAoDG;InFwwfP;ImFhrfA;MA5II,sBAoDG;InF2wfP;ImFnrfA;MA5II,sBAoDG;InF8wfP;ImFtrfA;MA5II,4BAoDG;InFixfP;ImFzrfA;MA5II,2BAoDG;InFoxfP;ImF5rfA;MA5II,4BAoDG;InFuxfP;ImF/rfA;MA5II,yBAoDG;InF0xfP;ImFlsfA;MA5II,4BAoDG;InF6xfP;ImFrsfA;MA5II,2BAoDG;InFgyfP;ImFxsfA;MA5II,yBAoDG;InFmyfP;ImF3sfA;MA5II,2BAoDG;InFsyfP;ImF9sfA;MA5II,yBAoDG;InFyyfP;ImFjtfA;MA5II,6BAoDG;InF4yfP;ImFptfA;MA5II,4BAoDG;InF+yfP;ImFvtfA;MA5II,yBAoDG;InFkzfP;ImF1tfA;MA5II,UAoDG;InFqzfP;ImF7tfA;MA5II,gBAoDG;InFwzfP;ImFhufA;MA5II,eAoDG;InF2zfP;ImFnufA;MA5II,gBAoDG;InF8zfP;ImFtufA;MA5II,aAoDG;InFi0fP;ImFzufA;MA5II,gBAoDG;InFo0fP;ImF5ufA;MA5II,eAoDG;InFu0fP;ImF/ufA;MA5II,aAoDG;InF00fP;ImFlvfA;MA5II,eAoDG;InF60fP;ImFrvfA;MA5II,aAoDG;InFg1fP;ImFxvfA;MA5II,iBAoDG;InFm1fP;ImF3vfA;MA5II,uBAoDG;InFs1fP;ImF9vfA;MA5II,sBAoDG;InFy1fP;ImFjwfA;MA5II,uBAoDG;InF41fP;ImFpwfA;MA5II,oBAoDG;InF+1fP;ImFvwfA;MA5II,uBAoDG;InFk2fP;ImF1wfA;MA5II,sBAoDG;InFq2fP;ImF7wfA;MA5II,oBAoDG;InFw2fP;ImFhxfA;MA5II,sBAoDG;InF22fP;ImFnxfA;MA5II,oBAoDG;InF82fP;ImFtxfA;MA5II,gBAoDG;InFi3fP;ImFzxfA;MA5II,sBAoDG;InFo3fP;ImF5xfA;MA5II,qBAoDG;InFu3fP;ImF/xfA;MA5II,sBAoDG;InF03fP;ImFlyfA;MA5II,mBAoDG;InF63fP;ImFryfA;MA5II,sBAoDG;InFg4fP;ImFxyfA;MA5II,qBAoDG;InFm4fP;ImF3yfA;MA5II,mBAoDG;InFs4fP;ImF9yfA;MA5II,qBAoDG;InFy4fP;ImFjzfA;MA5II,mBAoDG;InF44fP;ImFpzfA;MA5II,sBAoDG;InF+4fP;ImFvzfA;MA5II,4BAoDG;InFk5fP;ImF1zfA;MA5II,2BAoDG;InFq5fP;ImF7zfA;MA5II,4BAoDG;InFw5fP;ImFh0fA;MA5II,yBAoDG;InF25fP;ImFn0fA;MA5II,4BAoDG;InF85fP;ImFt0fA;MA5II,2BAoDG;InFi6fP;ImFz0fA;MA5II,yBAoDG;InFo6fP;ImF50fA;MA5II,2BAoDG;InFu6fP;ImF/0fA;MA5II,yBAoDG;InF06fP;ImFl1fA;MA5II,qBAoDG;InF66fP;ImFr1fA;MA5II,2BAoDG;InFg7fP;ImFx1fA;MA5II,0BAoDG;InFm7fP;ImF31fA;MA5II,2BAoDG;InFs7fP;ImF91fA;MA5II,wBAoDG;InFy7fP;ImFj2fA;MA5II,2BAoDG;InF47fP;ImFp2fA;MA5II,0BAoDG;InF+7fP;ImFv2fA;MA5II,wBAoDG;InFk8fP;ImF12fA;MA5II,0BAoDG;InFq8fP;ImF72fA;MA5II,wBAoDG;InFw8fP;ImFh3fA;MA5II,oBAoDG;InF28fP;ImFn3fA;MA5II,0BAoDG;InF88fP;ImFt3fA;MA5II,yBAoDG;InFi9fP;ImFz3fA;MA5II,0BAoDG;InFo9fP;ImF53fA;MA5II,uBAoDG;InFu9fP;ImF/3fA;MA5II,0BAoDG;InF09fP;ImFl4fA;MA5II,yBAoDG;InF69fP;ImFr4fA;MA5II,uBAoDG;InFg+fP;ImFx4fA;MA5II,yBAoDG;InFm+fP;ImF34fA;MA5II,uBAoDG;InFs+fP;ImF94fA;MA5II,uBAoDG;InFy+fP;ImFj5fA;MA5II,6BAoDG;InF4+fP;ImFp5fA;MA5II,4BAoDG;InF++fP;ImFv5fA;MA5II,6BAoDG;InFk/fP;ImF15fA;MA5II,0BAoDG;InFq/fP;ImF75fA;MA5II,6BAoDG;InFw/fP;ImFh6fA;MA5II,4BAoDG;InF2/fP;ImFn6fA;MA5II,0BAoDG;InF8/fP;ImFt6fA;MA5II,4BAoDG;InFiggBP;ImFz6fA;MA5II,0BAoDG;InFoggBP;ImF56fA;MA5II,MAoDG;InFuggBP;ImF/6fA;MA5II,YAoDG;InF0ggBP;ImFl7fA;MA5II,WAoDG;InF6ggBP;ImFr7fA;MA5II,YAoDG;InFghgBP;ImFx7fA;MA5II,SAoDG;InFmhgBP;ImF37fA;MA5II,YAoDG;InFshgBP;ImF97fA;MA5II,WAoDG;InFyhgBP;ImFj8fA;MA5II,SAoDG;InF4hgBP;ImFp8fA;MA5II,WAoDG;InF+hgBP;ImFv8fA;MA5II,SAoDG;InFkigBP;ImF18fA;MA5II,UAoDG;InFqigBP;ImF78fA;MA5II,gBAoDG;InFwigBP;ImFh9fA;MA5II,eAoDG;InF2igBP;ImFn9fA;MA5II,gBAoDG;InF8igBP;ImFt9fA;MA5II,aAoDG;InFijgBP;ImFz9fA;MA5II,gBAoDG;InFojgBP;ImF59fA;MA5II,eAoDG;InFujgBP;ImF/9fA;MA5II,aAoDG;InF0jgBP;ImFl+fA;MA5II,eAoDG;InF6jgBP;ImFr+fA;MA5II,aAoDG;InFgkgBP;ImFx+fA;MA5II,aAoDG;InFmkgBP;ImF3+fA;MA5II,mBAoDG;InFskgBP;ImF9+fA;MA5II,kBAoDG;InFykgBP;ImFj/fA;MA5II,mBAoDG;InF4kgBP;ImFp/fA;MA5II,gBAoDG;InF+kgBP;ImFv/fA;MA5II,mBAoDG;InFklgBP;ImF1/fA;MA5II,kBAoDG;InFqlgBP;ImF7/fA;MA5II,gBAoDG;InFwlgBP;ImFhggBA;MA5II,kBAoDG;InF2lgBP;ImFnggBA;MA5II,gBAoDG;InF8lgBP;ImFtggBA;MA5II,oBAoDG;InFimgBP;ImFzggBA;MA5II,0BAoDG;InFomgBP;ImF5ggBA;MA5II,yBAoDG;InFumgBP;ImF/ggBA;MA5II,0BAoDG;InF0mgBP;ImFlhgBA;MA5II,uBAoDG;InF6mgBP;ImFrhgBA;MA5II,0BAoDG;InFgngBP;ImFxhgBA;MA5II,yBAoDG;InFmngBP;ImF3hgBA;MA5II,uBAoDG;InFsngBP;ImF9hgBA;MA5II,yBAoDG;InFyngBP;ImFjigBA;MA5II,uBAoDG;InF4ngBP;ImFpigBA;MA5II,mBAoDG;InF+ngBP;ImFvigBA;MA5II,yBAoDG;InFkogBP;ImF1igBA;MA5II,wBAoDG;InFqogBP;ImF7igBA;MA5II,yBAoDG;InFwogBP;ImFhjgBA;MA5II,sBAoDG;InF2ogBP;ImFnjgBA;MA5II,yBAoDG;InF8ogBP;ImFtjgBA;MA5II,wBAoDG;InFipgBP;ImFzjgBA;MA5II,sBAoDG;InFopgBP;ImF5jgBA;MA5II,wBAoDG;InFupgBP;ImF/jgBA;MA5II,sBAoDG;InF0pgBP;ImFlkgBA;MA5II,yFAoDG;InF6pgBP;ImFrkgBA;MA5II,sBAoDG;InFgqgBP;ImFxkgBA;MA5II,wFAoDG;InFmqgBP;ImF3kgBA;MA5II,qBAoDG;InFsqgBP;ImF9kgBA;MA5II,iBAoDG;InFyqgBP;ImFjlgBA;MA5II,eAoDG;InF4qgBP;ImFplgBA;MA5II,kBAoDG;InF+qgBP;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-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-7);\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-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-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-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-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-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-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-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-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-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-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-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-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-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-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-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-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-fg: var(--fg-body);\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-bg: var(--bg-body);\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\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  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: transparent;\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: var(--spacer-2);\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-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [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(--radius-5);\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  [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], [type=datetime-local], [type=month], [type=week], [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  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-meridiem-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  ::-webkit-outer-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-type: \"\";\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style-type: \"\";\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: 5%;\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: 10%;\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: 7.5%;\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: var(--spacer);\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-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\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(--radius-5);\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-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\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], :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], :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], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :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, :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  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\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    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .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: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\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    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2);\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(--radius-5);\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='%23ffffff80' 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, [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    pointer-events: none;\n    background-color: var(--control-action-bg);\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, [readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\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(--radius-5);\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='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\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  .form-control-caret {\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  .form-control-caret[multiple],\n  .form-control-caret[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  [data-bs-theme=dark] select.form-control,\n  [data-bs-theme=dark] .form-control-caret {\n    background-image: var(--control-select-bg-dark);\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, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\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  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\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    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n  }\n  .check:checked, .check: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:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\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: calc(var(--radio-size) * 0.25);\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-fg);\n    cursor: default;\n  }\n  .radio:disabled:checked {\n    opacity: var(--radio-disabled-opacity);\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-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\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-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\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    flex-shrink: 0;\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: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\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:disabled:not(:checked)) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled:not(:checked))::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled:not(:checked)) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch:has(input:checked) {\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:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n  }\n  .switch:has(input:checked:disabled) {\n    opacity: 0.65;\n  }\n  .switch:has(input:checked:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\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-fill-bg: var(--primary-base);\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3));\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\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    --range-tick-width: var(--border-width);\n    --range-tick-height: 0.5rem;\n    --range-tick-bg: var(--border-color);\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n  .form-range-input {\n    display: block;\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-input:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:focus-visible {\n    outline: 0;\n  }\n  .form-range-input:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range-input::-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    background-image: var(--gradient);\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-input::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range-input::-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    background-image: var(--gradient);\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-input::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-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    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input::-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    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input:disabled {\n    pointer-events: none;\n  }\n  .form-range-input:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-webkit-slider-runnable-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc(var(--range-thumb-width) * 0.5 + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n  }\n  .form-range-bubble .tooltip-arrow {\n    position: absolute;\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n    left: 50%;\n    transform: translateX(-50%);\n  }\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * 0.25);\n  }\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    width: 0;\n  }\n  .form-range-tick::before {\n    width: var(--range-tick-width);\n    height: var(--range-tick-height);\n    content: \"\";\n    background-color: var(--range-tick-bg);\n  }\n  .form-range-tick:first-child {\n    align-items: flex-start;\n  }\n  .form-range-tick:last-child {\n    align-items: flex-end;\n  }\n  .form-range-tick-label {\n    margin-top: 0.125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.75rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25);\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-bg: var(--btn-input-bg);\n    --form-floating-label-disabled-bg: var(--bg-2);\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(--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 > label:has(~ textarea) {\n    align-items: flex-start;\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 > label:has(~ .form-control:focus),\n  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),\n  .form-floating > label:has(~ .form-control-plaintext) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ .form-control:-webkit-autofill) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ textarea:focus)::after,\n  .form-floating > label:has(~ textarea:not(:placeholder-shown))::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(--form-floating-label-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > label:has(~ textarea:disabled)::after {\n    background-color: var(--form-floating-label-disabled-bg);\n  }\n  .form-floating > label:has(~ .form-control-plaintext) {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > label:has(~ :disabled),\n  .form-floating > label:has(~ .form-control:disabled) {\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    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(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\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 > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\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(--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(--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    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\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  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5);\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    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\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 forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.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    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .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    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\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  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\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  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,\n  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.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    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .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    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\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  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\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  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\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(--radius-5);\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    background-image: none;\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-fg);\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-fg);\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-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\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-fg-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-fg-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-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) 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-fg) 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-fg);\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-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-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    background-image: none;\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    background-image: none;\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-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\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, :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, :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.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\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    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--radius-7));\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::-webkit-details-marker {\n    display: none;\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  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\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]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, 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: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, 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(--radius-5);\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 > p {\n    margin-bottom: 0;\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 > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\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 > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\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(--radius-7);\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-fg);\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-fg);\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(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\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(--radius-7);\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-type: \"\";\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-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--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-fg, 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: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\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(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--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: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\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    border-radius: var(--card-border-radius);\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, :last-child),\n  .card-list:not(:first-child, :last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-body:has(+ .card-footer),\n  .card-list:has(+ .card-footer) {\n    border-block-end-width: 0;\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-fg-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-fg-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, :last-child),\n  .card-row .card-list:not(:first-child, :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  @container (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: calc(-1 * var(--card-border-width));\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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\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    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\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(--radius-7);\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\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(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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    mask-repeat: no-repeat;\n    mask-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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\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(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\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-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\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    .sm-down\\: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  }\n  @media (width < 768px) {\n    .md-down\\: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  }\n  @media (width < 1024px) {\n    .lg-down\\: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  }\n  @media (width < 1280px) {\n    .xl-down\\: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  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\: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  }\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    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\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(--radius-5);\n    --menu-icon-size: 1rem;\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    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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-type: \"\";\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(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\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-fg, 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-fg-emphasis, 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    background-image: none;\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-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}\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(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\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-fg, 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-fg, 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-fg-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-fg-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  @container (width >= 576px) {\n    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\: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    .sm\\: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    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\: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    .sm\\: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  }\n  @container (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\: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    .md\\: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    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\: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    .md\\: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  }\n  @container (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\: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    .lg\\: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    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\: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    .lg\\: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  }\n  @container (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\: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    .xl\\: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    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\: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    .xl\\: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  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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  }\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-type: \"\";\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(--radius-5);\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(--radius-5);\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-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\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    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\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-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 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(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\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 > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .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-type: \"\";\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-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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 [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\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 [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\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    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\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.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-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(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-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-type: \"\";\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    background-image: var(--gradient);\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%, rgb(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(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\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: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\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(--radius-5);\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@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\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-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-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  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\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: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\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@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.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(--radius-5);\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.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-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-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    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\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-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-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-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-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-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-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-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-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-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-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-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-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-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-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-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-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, :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, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :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  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\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  .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    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 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-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\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: start;\n  }\n  .justify-self-end {\n    justify-self: 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-1 {\n    grid-template-columns: 1fr;\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: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\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: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\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: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\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: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\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: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\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: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\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: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\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: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\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: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\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: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\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: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\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: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\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: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\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: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\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: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\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: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\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: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\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    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\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  .hover\\:link-10: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  .hover\\:link-20: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  .hover\\:link-30: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  .hover\\:link-40: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  .hover\\:link-50: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  .hover\\:link-60: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  .hover\\:link-70: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  .hover\\:link-80: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  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3: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  .hover\\:underline-10: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  .hover\\:underline-20: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  .hover\\:underline-30: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  .hover\\:underline-40: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  .hover\\:underline-50: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  .hover\\:underline-60: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  .hover\\:underline-70: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  .hover\\:underline-80: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  .hover\\:underline-90: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  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\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-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-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-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\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: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\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(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--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    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-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// 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-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(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-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(--radius-5),\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(--radius-5),\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(--radius-5),\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(--radius-7),\n    // scss-docs-end root-form-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// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\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 \"../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(--radius-5),\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: transparent; // 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-fg, 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-fg-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], [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  // 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\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [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  // 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-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\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  ::-webkit-outer-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:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !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-negative-margins:     false !default;\n$enable-deprecation-messages: 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 * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $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: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\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:      var(--spacer-2) !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-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  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(--radius-5), $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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\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-type: \"\";\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: 5%,\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: 10%,\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: 7.5%,\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: var(--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-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\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// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\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, $prefix) {\n    @content($breakpoint, $next, $prefix);\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(--radius-5),\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-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\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: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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], :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], :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, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :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      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\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            .#{breakpoint-prefix($name, $breakpoints)}container {\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$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 ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$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        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$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          .#{$prefix}g-start-#{$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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2),\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/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(--radius-5),\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='#ffffff80' 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, [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      background-color: var(--control-action-bg);\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, [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    // Plaintext is a standalone class (not combined with `.form-control`), so it\n    // needs its own copy of the control tokens. Without them the `var(--control-*)`\n    // references below are invalid and fall back to their initial values (e.g.\n    // `border-width: medium`), which adds phantom inline borders and misaligns the\n    // text from a floating label.\n    @include tokens($form-control-tokens);\n\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  .form-control-caret {\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  [data-bs-theme=\"dark\"] {\n    select.form-control,\n    .form-control-caret {\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, [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(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\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 \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" 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: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\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  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n\n    &:checked,\n    &: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/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\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: var(--bg-body),\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  .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: calc(var(--radio-size) * .25);\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-fg);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--radio-disabled-opacity);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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$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.75),\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-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\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    flex-shrink: 0;\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 rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\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:disabled:not(:checked)) {\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(--fg-3);\n        cursor: default;\n      }\n    }\n\n    &:has(input:checked) {\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\n    }\n\n    &:has(input:checked:disabled) {\n      opacity: .65;\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\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-fill-bg: var(--primary-base),\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3)),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\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    --range-tick-width: var(--border-width),\n    --range-tick-height: .5rem,\n    --range-tick-bg: var(--border-color),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n// stylelint-enable custom-property-no-missing-var-function\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;\n  cursor: var(--range-track-cursor);\n  // Fill (progress) up to the thumb. The Range plugin keeps `--range-fill` (0–1) in sync.\n  background-color: var(--range-track-bg);\n  background-image:\n    linear-gradient(\n      to right,\n      var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%),\n      transparent calc(var(--range-fill, 0) * 100%)\n    );\n  border-color: transparent;\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    position: relative;\n    display: block;\n    width: 100%;\n  }\n\n  .form-range-input {\n    display: block;\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    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\n      outline: 0;\n\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\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);\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      &::-webkit-slider-runnable-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n\n      &::-moz-range-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n    }\n  }\n\n  // Value bubble: reuses the tooltip styles (`.tooltip` markup) so we don't duplicate the\n  // pill and arrow. We only add the static positioning the Tooltip plugin would normally do.\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc((var(--range-thumb-width) * .5) + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n\n    .tooltip-arrow {\n      position: absolute;\n      bottom: calc(-1 * var(--tooltip-arrow-height));\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n\n  // Tick marks generated from the linked <datalist>. Plugin builds `grid-template-columns`\n  // from the gaps between values so each tick lands on a grid line (handles uneven values).\n  // Track is inset by 1/4th of the thumb width to keep alignment.\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * .25);\n  }\n\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    // Zero-width items so labels never widen their `fr` column; the tick line and label\n    // overflow centered on the grid line via `align-items`.\n    width: 0;\n\n    &::before {\n      width: var(--range-tick-width);\n      height: var(--range-tick-height);\n      content: \"\";\n      background-color: var(--range-tick-bg);\n    }\n\n    &:first-child {\n      align-items: flex-start;\n    }\n\n    &:last-child {\n      align-items: flex-end;\n    }\n  }\n\n  .form-range-tick-label {\n    margin-top: .125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\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: rgb(255 255 255 / .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/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.75rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25),\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    // Backgrounds for the textarea label's masking pseudo-element. Mirrors\n    // `.form-control` here because the label is a sibling of the control, so it\n    // can't inherit the control's own `--control-bg`/`--control-disabled-bg`.\n    --form-floating-label-bg: var(--btn-input-bg),\n    --form-floating-label-disabled-bg: var(--bg-2),\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(--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    // Anchor the label to the top for textareas so it floats correctly at any height\n    > label:has(~ textarea) {\n      align-items: flex-start;\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    // The label precedes the control in the DOM so screen readers announce it\n    // before the field's value, so we look forward with `:has()` to react to the\n    // control's state (focus, value, disabled, etc.).\n    > label:has(~ .form-control:focus),\n    > label:has(~ .form-control:not(:placeholder-shown)),\n    > label:has(~ .form-control-plaintext) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > label:has(~ .form-control:-webkit-autofill) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    > label:has(~ textarea:focus),\n    > label:has(~ textarea:not(:placeholder-shown)) {\n      &::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(--form-floating-label-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > label:has(~ textarea:disabled)::after {\n      background-color: var(--form-floating-label-disabled-bg);\n    }\n\n    > label:has(~ .form-control-plaintext) {\n      border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n    }\n\n    > label:has(~ :disabled),\n    > label:has(~ .form-control:disabled) { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" 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    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    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\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    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\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  }\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(--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/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\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    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\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    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // let clicks fall through to the input overlay\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\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  // OTP input sizing — keep in sync with `$form-control-sizes`.\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    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5),\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      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\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 \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-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: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — the validation class lives on .form-range-input, while feedback sits outside\n  // the .form-range wrapper, so we use :has() to toggle it.\n  .form-range-input {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n    }\n  }\n\n  .form-range:has(.form-range-input.is-#{$state}) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control: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  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\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(--radius-5),\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 rgb(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\": \"fg\",\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\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\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-fg, 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-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-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  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\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, :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, :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/mask-icon\" 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.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\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    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\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(--radius-7)),\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    &::-webkit-details-marker {\n      display: none;\n    }\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    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\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\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, 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: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, 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(--radius-5),\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 > p {\n    margin-bottom: 0;\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      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\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    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\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} > .avatar {\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      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" 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(--radius-7),\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\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\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/mask-icon\" 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(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\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(--radius-7),\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-type: \"\";\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    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\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(--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-fg, 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: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\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(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--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: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .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, :last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n\n    // The footer draws a full border (including its top edge), so a body/list\n    // segment that precedes it must not also draw a bottom border or the seam\n    // doubles up.\n    &:has(+ .card-footer) {\n      border-block-end-width: 0;\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-fg-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-fg-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, :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 groups lay out their cards in a row using a container query, so wrap the\n  // group in a query container (e.g., the `.contains-inline` utility) for the row\n  // layout to take effect. Without a query container the cards remain stacked.\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 container-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        // Borders now live on the inner segments (header, body, list, footer)\n        // and the card images use outlines, so adjacent cards would otherwise\n        // render a doubled-up border at each seam. Pull subsequent cards back by\n        // one border width so their leading edges overlap the previous card's\n        // trailing edge, collapsing the seam into a single line. Gap can't be\n        // negative, so this relies on a negative margin.\n        + .card {\n          margin-inline-start: calc(-1 * var(--card-border-width));\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            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\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            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\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/mask-icon\" 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(--radius-7),\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\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(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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>\"), $size: null);\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(--radius-5));\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(--radius-5));\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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/dialog-shared\" 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(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\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  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\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    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\: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    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(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    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\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 \"mixins/transition\" 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(--radius-7),\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(--radius-5),\n    --menu-icon-size: 1rem,\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    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\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-type: \"\";\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(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\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-fg, 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-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\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      background-color: var(--theme-bg, var(--menu-item-active-bg));\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-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  // scss-docs-end submenu\n}\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(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\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-type: \"\"; 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-fg, 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-fg, 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-fg-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-fg-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  // The responsive variants use container queries, so wrap the list group in a\n  // query container (e.g., the `.contains-inline` utility) for them to take effect.\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}list-group-horizontal {\n      @include container-breakpoint-up($breakpoint) {\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(--radius-5),\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-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\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-type: \"\";\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(--radius-5));\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    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\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  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\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  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\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/mask-icon\" 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(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\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    background-color: var(--navbar-bg, var(--bg-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      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\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-type: \"\";\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  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` 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    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\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, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\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/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  // Native ::backdrop for modal drawer.\n  // ::backdrop lives in the top layer outside the DOM tree, so it does NOT\n  // inherit custom properties from the element. Tokens must be applied directly.\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      @include tokens($drawer-backdrop-tokens);\n      @include tokens($drawer-tokens);\n      background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\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%, rgb(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(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\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: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\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","@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/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(--radius-5),\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 \"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-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-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  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\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}\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: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\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    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\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 \"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: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--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(--radius-5),\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@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","@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    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-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, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\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: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// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($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: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$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// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-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    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-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    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-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    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-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    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-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    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-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    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-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    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-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  \"fg\": var(--fg-body),\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  \"bg\": var(--bg-body),\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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, :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, :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 \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\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 target children via `child-selector`, wrapped in :where() for zero specificity\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 emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\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, $prefix: \"\") {\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, dark, important, state, variables, child-selector, enabled;\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  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` 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  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: 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        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\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    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
index eee474a6e4b51c7e55663518fb2e02bec75a50e4..59011d1ff0bf396984d4bea4b198eae928cfb1d9 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)}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:transparent;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{margin-top:0;margin-bottom:var(--bs-spacer-2);color:var(--bs-heading-color);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;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration:underline dotted;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-fg,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-fg-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));-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],[class]),a:not([href],[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-radius-5);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}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date],[type=datetime-local],[type=month],[type=week],[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}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-meridiem-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}::-webkit-outer-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,.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container{--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){.sm\:container,.container{max-width:540px}}@media (width>=768px){.md\:container,.sm\:container,.container{max-width:720px}}@media (width>=1024px){.lg\:container,.md\:container,.sm\:container,.container{max-width:960px}}@media (width>=1280px){.xl\:container,.lg\:container,.md\:container,.sm\:container,.container{max-width:1200px}}@media (width>=1536px){.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container,.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:.75rem}.g-3,.gy-3{--bs-gutter-y:.75rem}.g-4,.gx-4{--bs-gutter-x:1rem}.g-4,.gy-4{--bs-gutter-y:1rem}.g-5,.gx-5{--bs-gutter-x:1.25rem}.g-5,.gy-5{--bs-gutter-y:1.25rem}.g-6,.gx-6{--bs-gutter-x:1.5rem}.g-6,.gy-6{--bs-gutter-y:1.5rem}.g-7,.gx-7{--bs-gutter-x:2rem}.g-7,.gy-7{--bs-gutter-y:2rem}.g-8,.gx-8{--bs-gutter-x:2.5rem}.g-8,.gy-8{--bs-gutter-y:2.5rem}.g-9,.gx-9{--bs-gutter-x:3rem}.g-9,.gy-9{--bs-gutter-y:3rem}@media (width>=576px){.sm\:col{flex:1 0 0}.sm\:row-cols-auto>*{flex:none;width:auto}.sm\:row-cols-1>*{flex:none;width:100%}.sm\:row-cols-2>*{flex:none;width:50%}.sm\:row-cols-3>*{flex:none;width:33.3333%}.sm\:row-cols-4>*{flex:none;width:25%}.sm\:row-cols-5>*{flex:none;width:20%}.sm\:row-cols-6>*{flex:none;width:16.6667%}.sm\:col-auto{flex:none;width:auto}.sm\:col-1{flex:none;width:8.33333%}.sm\:col-2{flex:none;width:16.6667%}.sm\:col-3{flex:none;width:25%}.sm\:col-4{flex:none;width:33.3333%}.sm\:col-5{flex:none;width:41.6667%}.sm\:col-6{flex:none;width:50%}.sm\:col-7{flex:none;width:58.3333%}.sm\:col-8{flex:none;width:66.6667%}.sm\:col-9{flex:none;width:75%}.sm\:col-10{flex:none;width:83.3333%}.sm\:col-11{flex:none;width:91.6667%}.sm\:col-12{flex:none;width:100%}.sm\:offset-0{margin-inline-start:0}.sm\:offset-1{margin-inline-start:8.33333%}.sm\:offset-2{margin-inline-start:16.6667%}.sm\:offset-3{margin-inline-start:25%}.sm\:offset-4{margin-inline-start:33.3333%}.sm\:offset-5{margin-inline-start:41.6667%}.sm\:offset-6{margin-inline-start:50%}.sm\:offset-7{margin-inline-start:58.3333%}.sm\:offset-8{margin-inline-start:66.6667%}.sm\:offset-9{margin-inline-start:75%}.sm\:offset-10{margin-inline-start:83.3333%}.sm\:offset-11{margin-inline-start:91.6667%}.sm\:g-0,.sm\:gx-0{--bs-gutter-x:0}.sm\:g-0,.sm\:gy-0{--bs-gutter-y:0}.sm\:g-1,.sm\:gx-1{--bs-gutter-x:.25rem}.sm\:g-1,.sm\:gy-1{--bs-gutter-y:.25rem}.sm\:g-2,.sm\:gx-2{--bs-gutter-x:.5rem}.sm\:g-2,.sm\:gy-2{--bs-gutter-y:.5rem}.sm\:g-3,.sm\:gx-3{--bs-gutter-x:.75rem}.sm\:g-3,.sm\:gy-3{--bs-gutter-y:.75rem}.sm\:g-4,.sm\:gx-4{--bs-gutter-x:1rem}.sm\:g-4,.sm\:gy-4{--bs-gutter-y:1rem}.sm\:g-5,.sm\:gx-5{--bs-gutter-x:1.25rem}.sm\:g-5,.sm\:gy-5{--bs-gutter-y:1.25rem}.sm\:g-6,.sm\:gx-6{--bs-gutter-x:1.5rem}.sm\:g-6,.sm\:gy-6{--bs-gutter-y:1.5rem}.sm\:g-7,.sm\:gx-7{--bs-gutter-x:2rem}.sm\:g-7,.sm\:gy-7{--bs-gutter-y:2rem}.sm\:g-8,.sm\:gx-8{--bs-gutter-x:2.5rem}.sm\:g-8,.sm\:gy-8{--bs-gutter-y:2.5rem}.sm\:g-9,.sm\:gx-9{--bs-gutter-x:3rem}.sm\:g-9,.sm\:gy-9{--bs-gutter-y:3rem}}@media (width>=768px){.md\:col{flex:1 0 0}.md\:row-cols-auto>*{flex:none;width:auto}.md\:row-cols-1>*{flex:none;width:100%}.md\:row-cols-2>*{flex:none;width:50%}.md\:row-cols-3>*{flex:none;width:33.3333%}.md\:row-cols-4>*{flex:none;width:25%}.md\:row-cols-5>*{flex:none;width:20%}.md\:row-cols-6>*{flex:none;width:16.6667%}.md\:col-auto{flex:none;width:auto}.md\:col-1{flex:none;width:8.33333%}.md\:col-2{flex:none;width:16.6667%}.md\:col-3{flex:none;width:25%}.md\:col-4{flex:none;width:33.3333%}.md\:col-5{flex:none;width:41.6667%}.md\:col-6{flex:none;width:50%}.md\:col-7{flex:none;width:58.3333%}.md\:col-8{flex:none;width:66.6667%}.md\:col-9{flex:none;width:75%}.md\:col-10{flex:none;width:83.3333%}.md\:col-11{flex:none;width:91.6667%}.md\:col-12{flex:none;width:100%}.md\:offset-0{margin-inline-start:0}.md\:offset-1{margin-inline-start:8.33333%}.md\:offset-2{margin-inline-start:16.6667%}.md\:offset-3{margin-inline-start:25%}.md\:offset-4{margin-inline-start:33.3333%}.md\:offset-5{margin-inline-start:41.6667%}.md\:offset-6{margin-inline-start:50%}.md\:offset-7{margin-inline-start:58.3333%}.md\:offset-8{margin-inline-start:66.6667%}.md\:offset-9{margin-inline-start:75%}.md\:offset-10{margin-inline-start:83.3333%}.md\:offset-11{margin-inline-start:91.6667%}.md\:g-0,.md\:gx-0{--bs-gutter-x:0}.md\:g-0,.md\:gy-0{--bs-gutter-y:0}.md\:g-1,.md\:gx-1{--bs-gutter-x:.25rem}.md\:g-1,.md\:gy-1{--bs-gutter-y:.25rem}.md\:g-2,.md\:gx-2{--bs-gutter-x:.5rem}.md\:g-2,.md\:gy-2{--bs-gutter-y:.5rem}.md\:g-3,.md\:gx-3{--bs-gutter-x:.75rem}.md\:g-3,.md\:gy-3{--bs-gutter-y:.75rem}.md\:g-4,.md\:gx-4{--bs-gutter-x:1rem}.md\:g-4,.md\:gy-4{--bs-gutter-y:1rem}.md\:g-5,.md\:gx-5{--bs-gutter-x:1.25rem}.md\:g-5,.md\:gy-5{--bs-gutter-y:1.25rem}.md\:g-6,.md\:gx-6{--bs-gutter-x:1.5rem}.md\:g-6,.md\:gy-6{--bs-gutter-y:1.5rem}.md\:g-7,.md\:gx-7{--bs-gutter-x:2rem}.md\:g-7,.md\:gy-7{--bs-gutter-y:2rem}.md\:g-8,.md\:gx-8{--bs-gutter-x:2.5rem}.md\:g-8,.md\:gy-8{--bs-gutter-y:2.5rem}.md\:g-9,.md\:gx-9{--bs-gutter-x:3rem}.md\:g-9,.md\:gy-9{--bs-gutter-y:3rem}}@media (width>=1024px){.lg\:col{flex:1 0 0}.lg\:row-cols-auto>*{flex:none;width:auto}.lg\:row-cols-1>*{flex:none;width:100%}.lg\:row-cols-2>*{flex:none;width:50%}.lg\:row-cols-3>*{flex:none;width:33.3333%}.lg\:row-cols-4>*{flex:none;width:25%}.lg\:row-cols-5>*{flex:none;width:20%}.lg\:row-cols-6>*{flex:none;width:16.6667%}.lg\:col-auto{flex:none;width:auto}.lg\:col-1{flex:none;width:8.33333%}.lg\:col-2{flex:none;width:16.6667%}.lg\:col-3{flex:none;width:25%}.lg\:col-4{flex:none;width:33.3333%}.lg\:col-5{flex:none;width:41.6667%}.lg\:col-6{flex:none;width:50%}.lg\:col-7{flex:none;width:58.3333%}.lg\:col-8{flex:none;width:66.6667%}.lg\:col-9{flex:none;width:75%}.lg\:col-10{flex:none;width:83.3333%}.lg\:col-11{flex:none;width:91.6667%}.lg\:col-12{flex:none;width:100%}.lg\:offset-0{margin-inline-start:0}.lg\:offset-1{margin-inline-start:8.33333%}.lg\:offset-2{margin-inline-start:16.6667%}.lg\:offset-3{margin-inline-start:25%}.lg\:offset-4{margin-inline-start:33.3333%}.lg\:offset-5{margin-inline-start:41.6667%}.lg\:offset-6{margin-inline-start:50%}.lg\:offset-7{margin-inline-start:58.3333%}.lg\:offset-8{margin-inline-start:66.6667%}.lg\:offset-9{margin-inline-start:75%}.lg\:offset-10{margin-inline-start:83.3333%}.lg\:offset-11{margin-inline-start:91.6667%}.lg\:g-0,.lg\:gx-0{--bs-gutter-x:0}.lg\:g-0,.lg\:gy-0{--bs-gutter-y:0}.lg\:g-1,.lg\:gx-1{--bs-gutter-x:.25rem}.lg\:g-1,.lg\:gy-1{--bs-gutter-y:.25rem}.lg\:g-2,.lg\:gx-2{--bs-gutter-x:.5rem}.lg\:g-2,.lg\:gy-2{--bs-gutter-y:.5rem}.lg\:g-3,.lg\:gx-3{--bs-gutter-x:.75rem}.lg\:g-3,.lg\:gy-3{--bs-gutter-y:.75rem}.lg\:g-4,.lg\:gx-4{--bs-gutter-x:1rem}.lg\:g-4,.lg\:gy-4{--bs-gutter-y:1rem}.lg\:g-5,.lg\:gx-5{--bs-gutter-x:1.25rem}.lg\:g-5,.lg\:gy-5{--bs-gutter-y:1.25rem}.lg\:g-6,.lg\:gx-6{--bs-gutter-x:1.5rem}.lg\:g-6,.lg\:gy-6{--bs-gutter-y:1.5rem}.lg\:g-7,.lg\:gx-7{--bs-gutter-x:2rem}.lg\:g-7,.lg\:gy-7{--bs-gutter-y:2rem}.lg\:g-8,.lg\:gx-8{--bs-gutter-x:2.5rem}.lg\:g-8,.lg\:gy-8{--bs-gutter-y:2.5rem}.lg\:g-9,.lg\:gx-9{--bs-gutter-x:3rem}.lg\:g-9,.lg\:gy-9{--bs-gutter-y:3rem}}@media (width>=1280px){.xl\:col{flex:1 0 0}.xl\:row-cols-auto>*{flex:none;width:auto}.xl\:row-cols-1>*{flex:none;width:100%}.xl\:row-cols-2>*{flex:none;width:50%}.xl\:row-cols-3>*{flex:none;width:33.3333%}.xl\:row-cols-4>*{flex:none;width:25%}.xl\:row-cols-5>*{flex:none;width:20%}.xl\:row-cols-6>*{flex:none;width:16.6667%}.xl\:col-auto{flex:none;width:auto}.xl\:col-1{flex:none;width:8.33333%}.xl\:col-2{flex:none;width:16.6667%}.xl\:col-3{flex:none;width:25%}.xl\:col-4{flex:none;width:33.3333%}.xl\:col-5{flex:none;width:41.6667%}.xl\:col-6{flex:none;width:50%}.xl\:col-7{flex:none;width:58.3333%}.xl\:col-8{flex:none;width:66.6667%}.xl\:col-9{flex:none;width:75%}.xl\:col-10{flex:none;width:83.3333%}.xl\:col-11{flex:none;width:91.6667%}.xl\:col-12{flex:none;width:100%}.xl\:offset-0{margin-inline-start:0}.xl\:offset-1{margin-inline-start:8.33333%}.xl\:offset-2{margin-inline-start:16.6667%}.xl\:offset-3{margin-inline-start:25%}.xl\:offset-4{margin-inline-start:33.3333%}.xl\:offset-5{margin-inline-start:41.6667%}.xl\:offset-6{margin-inline-start:50%}.xl\:offset-7{margin-inline-start:58.3333%}.xl\:offset-8{margin-inline-start:66.6667%}.xl\:offset-9{margin-inline-start:75%}.xl\:offset-10{margin-inline-start:83.3333%}.xl\:offset-11{margin-inline-start:91.6667%}.xl\:g-0,.xl\:gx-0{--bs-gutter-x:0}.xl\:g-0,.xl\:gy-0{--bs-gutter-y:0}.xl\:g-1,.xl\:gx-1{--bs-gutter-x:.25rem}.xl\:g-1,.xl\:gy-1{--bs-gutter-y:.25rem}.xl\:g-2,.xl\:gx-2{--bs-gutter-x:.5rem}.xl\:g-2,.xl\:gy-2{--bs-gutter-y:.5rem}.xl\:g-3,.xl\:gx-3{--bs-gutter-x:.75rem}.xl\:g-3,.xl\:gy-3{--bs-gutter-y:.75rem}.xl\:g-4,.xl\:gx-4{--bs-gutter-x:1rem}.xl\:g-4,.xl\:gy-4{--bs-gutter-y:1rem}.xl\:g-5,.xl\:gx-5{--bs-gutter-x:1.25rem}.xl\:g-5,.xl\:gy-5{--bs-gutter-y:1.25rem}.xl\:g-6,.xl\:gx-6{--bs-gutter-x:1.5rem}.xl\:g-6,.xl\:gy-6{--bs-gutter-y:1.5rem}.xl\:g-7,.xl\:gx-7{--bs-gutter-x:2rem}.xl\:g-7,.xl\:gy-7{--bs-gutter-y:2rem}.xl\:g-8,.xl\:gx-8{--bs-gutter-x:2.5rem}.xl\:g-8,.xl\:gy-8{--bs-gutter-y:2.5rem}.xl\:g-9,.xl\:gx-9{--bs-gutter-x:3rem}.xl\:g-9,.xl\:gy-9{--bs-gutter-y:3rem}}@media (width>=1536px){.\32 xl\:col{flex:1 0 0}.\32 xl\:row-cols-auto>*{flex:none;width:auto}.\32 xl\:row-cols-1>*{flex:none;width:100%}.\32 xl\:row-cols-2>*{flex:none;width:50%}.\32 xl\:row-cols-3>*{flex:none;width:33.3333%}.\32 xl\:row-cols-4>*{flex:none;width:25%}.\32 xl\:row-cols-5>*{flex:none;width:20%}.\32 xl\:row-cols-6>*{flex:none;width:16.6667%}.\32 xl\:col-auto{flex:none;width:auto}.\32 xl\:col-1{flex:none;width:8.33333%}.\32 xl\:col-2{flex:none;width:16.6667%}.\32 xl\:col-3{flex:none;width:25%}.\32 xl\:col-4{flex:none;width:33.3333%}.\32 xl\:col-5{flex:none;width:41.6667%}.\32 xl\:col-6{flex:none;width:50%}.\32 xl\:col-7{flex:none;width:58.3333%}.\32 xl\:col-8{flex:none;width:66.6667%}.\32 xl\:col-9{flex:none;width:75%}.\32 xl\:col-10{flex:none;width:83.3333%}.\32 xl\:col-11{flex:none;width:91.6667%}.\32 xl\:col-12{flex:none;width:100%}.\32 xl\:offset-0{margin-inline-start:0}.\32 xl\:offset-1{margin-inline-start:8.33333%}.\32 xl\:offset-2{margin-inline-start:16.6667%}.\32 xl\:offset-3{margin-inline-start:25%}.\32 xl\:offset-4{margin-inline-start:33.3333%}.\32 xl\:offset-5{margin-inline-start:41.6667%}.\32 xl\:offset-6{margin-inline-start:50%}.\32 xl\:offset-7{margin-inline-start:58.3333%}.\32 xl\:offset-8{margin-inline-start:66.6667%}.\32 xl\:offset-9{margin-inline-start:75%}.\32 xl\:offset-10{margin-inline-start:83.3333%}.\32 xl\:offset-11{margin-inline-start:91.6667%}.\32 xl\:g-0,.\32 xl\:gx-0{--bs-gutter-x:0}.\32 xl\:g-0,.\32 xl\:gy-0{--bs-gutter-y:0}.\32 xl\:g-1,.\32 xl\:gx-1{--bs-gutter-x:.25rem}.\32 xl\:g-1,.\32 xl\:gy-1{--bs-gutter-y:.25rem}.\32 xl\:g-2,.\32 xl\:gx-2{--bs-gutter-x:.5rem}.\32 xl\:g-2,.\32 xl\:gy-2{--bs-gutter-y:.5rem}.\32 xl\:g-3,.\32 xl\:gx-3{--bs-gutter-x:.75rem}.\32 xl\:g-3,.\32 xl\:gy-3{--bs-gutter-y:.75rem}.\32 xl\:g-4,.\32 xl\:gx-4{--bs-gutter-x:1rem}.\32 xl\:g-4,.\32 xl\:gy-4{--bs-gutter-y:1rem}.\32 xl\:g-5,.\32 xl\:gx-5{--bs-gutter-x:1.25rem}.\32 xl\:g-5,.\32 xl\:gy-5{--bs-gutter-y:1.25rem}.\32 xl\:g-6,.\32 xl\:gx-6{--bs-gutter-x:1.5rem}.\32 xl\:g-6,.\32 xl\:gy-6{--bs-gutter-y:1.5rem}.\32 xl\:g-7,.\32 xl\:gx-7{--bs-gutter-x:2rem}.\32 xl\:g-7,.\32 xl\:gy-7{--bs-gutter-y:2rem}.\32 xl\:g-8,.\32 xl\:gx-8{--bs-gutter-x:2.5rem}.\32 xl\:g-8,.\32 xl\:gy-8{--bs-gutter-y:2.5rem}.\32 xl\:g-9,.\32 xl\:gx-9{--bs-gutter-x:3rem}.\32 xl\:g-9,.\32 xl\:gy-9{--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){.sm\:g-col-1{grid-column:auto/span 1}.sm\:g-col-2{grid-column:auto/span 2}.sm\:g-col-3{grid-column:auto/span 3}.sm\:g-col-4{grid-column:auto/span 4}.sm\:g-col-5{grid-column:auto/span 5}.sm\:g-col-6{grid-column:auto/span 6}.sm\:g-col-7{grid-column:auto/span 7}.sm\:g-col-8{grid-column:auto/span 8}.sm\:g-col-9{grid-column:auto/span 9}.sm\:g-col-10{grid-column:auto/span 10}.sm\:g-col-11{grid-column:auto/span 11}.sm\:g-col-12{grid-column:auto/span 12}.sm\:g-start-1{grid-column-start:1}.sm\:g-start-2{grid-column-start:2}.sm\:g-start-3{grid-column-start:3}.sm\:g-start-4{grid-column-start:4}.sm\:g-start-5{grid-column-start:5}.sm\:g-start-6{grid-column-start:6}.sm\:g-start-7{grid-column-start:7}.sm\:g-start-8{grid-column-start:8}.sm\:g-start-9{grid-column-start:9}.sm\:g-start-10{grid-column-start:10}.sm\:g-start-11{grid-column-start:11}}@media (width>=768px){.md\:g-col-1{grid-column:auto/span 1}.md\:g-col-2{grid-column:auto/span 2}.md\:g-col-3{grid-column:auto/span 3}.md\:g-col-4{grid-column:auto/span 4}.md\:g-col-5{grid-column:auto/span 5}.md\:g-col-6{grid-column:auto/span 6}.md\:g-col-7{grid-column:auto/span 7}.md\:g-col-8{grid-column:auto/span 8}.md\:g-col-9{grid-column:auto/span 9}.md\:g-col-10{grid-column:auto/span 10}.md\:g-col-11{grid-column:auto/span 11}.md\:g-col-12{grid-column:auto/span 12}.md\:g-start-1{grid-column-start:1}.md\:g-start-2{grid-column-start:2}.md\:g-start-3{grid-column-start:3}.md\:g-start-4{grid-column-start:4}.md\:g-start-5{grid-column-start:5}.md\:g-start-6{grid-column-start:6}.md\:g-start-7{grid-column-start:7}.md\:g-start-8{grid-column-start:8}.md\:g-start-9{grid-column-start:9}.md\:g-start-10{grid-column-start:10}.md\:g-start-11{grid-column-start:11}}@media (width>=1024px){.lg\:g-col-1{grid-column:auto/span 1}.lg\:g-col-2{grid-column:auto/span 2}.lg\:g-col-3{grid-column:auto/span 3}.lg\:g-col-4{grid-column:auto/span 4}.lg\:g-col-5{grid-column:auto/span 5}.lg\:g-col-6{grid-column:auto/span 6}.lg\:g-col-7{grid-column:auto/span 7}.lg\:g-col-8{grid-column:auto/span 8}.lg\:g-col-9{grid-column:auto/span 9}.lg\:g-col-10{grid-column:auto/span 10}.lg\:g-col-11{grid-column:auto/span 11}.lg\:g-col-12{grid-column:auto/span 12}.lg\:g-start-1{grid-column-start:1}.lg\:g-start-2{grid-column-start:2}.lg\:g-start-3{grid-column-start:3}.lg\:g-start-4{grid-column-start:4}.lg\:g-start-5{grid-column-start:5}.lg\:g-start-6{grid-column-start:6}.lg\:g-start-7{grid-column-start:7}.lg\:g-start-8{grid-column-start:8}.lg\:g-start-9{grid-column-start:9}.lg\:g-start-10{grid-column-start:10}.lg\:g-start-11{grid-column-start:11}}@media (width>=1280px){.xl\:g-col-1{grid-column:auto/span 1}.xl\:g-col-2{grid-column:auto/span 2}.xl\:g-col-3{grid-column:auto/span 3}.xl\:g-col-4{grid-column:auto/span 4}.xl\:g-col-5{grid-column:auto/span 5}.xl\:g-col-6{grid-column:auto/span 6}.xl\:g-col-7{grid-column:auto/span 7}.xl\:g-col-8{grid-column:auto/span 8}.xl\:g-col-9{grid-column:auto/span 9}.xl\:g-col-10{grid-column:auto/span 10}.xl\:g-col-11{grid-column:auto/span 11}.xl\:g-col-12{grid-column:auto/span 12}.xl\:g-start-1{grid-column-start:1}.xl\:g-start-2{grid-column-start:2}.xl\:g-start-3{grid-column-start:3}.xl\:g-start-4{grid-column-start:4}.xl\:g-start-5{grid-column-start:5}.xl\:g-start-6{grid-column-start:6}.xl\:g-start-7{grid-column-start:7}.xl\:g-start-8{grid-column-start:8}.xl\:g-start-9{grid-column-start:9}.xl\:g-start-10{grid-column-start:10}.xl\:g-start-11{grid-column-start:11}}@media (width>=1536px){.\32 xl\:g-col-1{grid-column:auto/span 1}.\32 xl\:g-col-2{grid-column:auto/span 2}.\32 xl\:g-col-3{grid-column:auto/span 3}.\32 xl\:g-col-4{grid-column:auto/span 4}.\32 xl\:g-col-5{grid-column:auto/span 5}.\32 xl\:g-col-6{grid-column:auto/span 6}.\32 xl\:g-col-7{grid-column:auto/span 7}.\32 xl\:g-col-8{grid-column:auto/span 8}.\32 xl\:g-col-9{grid-column:auto/span 9}.\32 xl\:g-col-10{grid-column:auto/span 10}.\32 xl\:g-col-11{grid-column:auto/span 11}.\32 xl\:g-col-12{grid-column:auto/span 12}.\32 xl\:g-start-1{grid-column-start:1}.\32 xl\:g-start-2{grid-column-start:2}.\32 xl\:g-start-3{grid-column-start:3}.\32 xl\:g-start-4{grid-column-start:4}.\32 xl\:g-start-5{grid-column-start:5}.\32 xl\:g-start-6{grid-column-start:6}.\32 xl\:g-start-7{grid-column-start:7}.\32 xl\:g-start-8{grid-column-start:8}.\32 xl\:g-start-9{grid-column-start:9}.\32 xl\:g-start-10{grid-column-start:10}.\32 xl\:g-start-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:5%;--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:10%;--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:7.5%;--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%;margin-bottom:var(--bs-spacer);vertical-align:var(--bs-table-cell-vertical-align);border-color:var(--bs-theme-border,var(--bs-table-border-color))}.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-fg,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-fg,var(--bs-table-striped-color));--bs-table-bg-type:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-striped-bg-factor), transparent)}.table-active{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-active-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-active-bg-factor), transparent)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-hover-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-hover-bg-factor), transparent)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.sm\:table-responsive{container-type:inline-size}@media (width<576px){.sm\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.md\:table-responsive{container-type:inline-size}@media (width<768px){.md\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.lg\:table-responsive{container-type:inline-size}@media (width<1024px){.lg\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.xl\:table-responsive{container-type:inline-size}@media (width<1280px){.xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.\32 xl\:table-responsive{container-type:inline-size}@media (width<1536px){.\32 xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}@container (width<576px){.sm\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sm\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.sm\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.sm\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.sm\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.sm\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.sm\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<768px){.md\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.md\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.md\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.md\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.md\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.md\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.md\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1024px){.lg\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lg\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.lg\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.lg\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.lg\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.lg\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.lg\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1280px){.xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1536px){.\32 xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\32 xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.\32 xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.\32 xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.\32 xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.\32 xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.\32 xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}.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-radius-5);--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-line-height:1.5;--bs-content-gap:calc(var(--bs-content-font-size) * var(--bs-content-line-height));--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);line-height:var(--bs-content-line-height);flex-direction:column;margin-inline:auto;display:flex;position:relative}@media (width>=1024px){.prose{--bs-content-font-size:var(--bs-font-size-md);--bs-content-line-height:1.625}}.prose :where(p,ul,ol,dl,pre,table,blockquote):not(:where(.not-prose,.not-prose *)){margin-block:0}.prose :where(ul,ol):not([class],: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],: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],:where(.not-prose,.not-prose *)) code{color:inherit;font-weight:600}.prose :where(h1,h2):not(:first-child,:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) * .75)}.prose :where(h3,h4,h5,h6):not(:first-child,: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;-webkit-text-decoration-color:color-mix(in srgb, var(--bs-link-color) 25%, transparent);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{-webkit-text-decoration-color:var(--bs-link-hover-color);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,inherit);font-style:var(--bs-label-font-style,inherit);font-weight:var(--bs-label-font-weight,500);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-2);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-radius-5);--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='%23ffffff80' 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,[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);pointer-events:none;background-color:var(--bs-control-action-bg);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,[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,.form-control-caret{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"]),.form-control-caret[multiple],.form-control-caret[size]:not([size="1"]){background-image:none;padding-inline-end:var(--bs-control-padding-x)}@media (prefers-color-scheme:dark){select.form-control,.form-control-caret{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,[readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-radius-5);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-radius-5);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}.check{--bs-check-size:1.25rem;--bs-check-margin-block:.125rem;--bs-check-bg:var(--bs-bg-body);--bs-check-border-color:var(--bs-border-color);--bs-check-border-radius:var(--bs-radius-5);--bs-check-icon-checked:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e");--bs-check-icon-indeterminate:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e");--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);width:var(--bs-check-size);height:var(--bs-check-size);margin-block:var(--bs-check-margin-block);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:33%;flex-shrink:0;position:relative}.check:checked,.check: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:checked:before,.check:indeterminate:before{pointer-events:none;content:"";background-color:var(--bs-theme-contrast,var(--bs-primary-contrast));position:absolute;inset:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.check:checked:before{mask-image:var(--bs-check-icon-checked)}.check:indeterminate:before{mask-image:var(--bs-check-icon-indeterminate)}.check:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:-1px}.check:disabled{--bs-check-bg:var(--bs-check-disabled-bg)}.check:disabled~label{color:var(--bs-fg-3);cursor:default}.check:disabled:checked{opacity:var(--bs-check-disabled-opacity)}.check-sm{--bs-check-size:1rem}.check-sm+label{font-size:var(--bs-font-size-sm)}.check-lg{--bs-check-size:1.5rem;--bs-check-margin-block:.375rem}.check-lg+label{font-size:var(--bs-font-size-lg)}.radio{--bs-radio-size:1.25rem;--bs-radio-margin-block:.125rem;--bs-radio-bg:var(--bs-bg-body);--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{inset:calc(var(--bs-radio-size) * .25);content:"";background-color:currentColor;border-radius:50%;position:absolute}.radio:disabled{--bs-radio-bg:var(--bs-radio-disabled-bg)}.radio:disabled~label{color:var(--bs-secondary-fg);cursor:default}.radio:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.radio-sm{--bs-radio-size:1rem}.radio-sm+label{font-size:var(--bs-font-size-sm)}.radio-lg{--bs-radio-size:1.5rem;--bs-radio-margin-block:.375rem}.radio-lg+label{font-size:var(--bs-font-size-lg)}.switch{--bs-switch-height:1.25rem;--bs-switch-width:calc(var(--bs-switch-height) * 1.75);--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-indicator-width:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--bs-switch-indicator-height:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--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;transition:background-color .15s ease-in-out;position:relative;box-shadow:inset 0 1px 2px #0000000d}.switch:before{inset-block:var(--bs-switch-padding);width:var(--bs-switch-indicator-width);height:var(--bs-switch-indicator-height);content:"";background-color:var(--bs-theme-contrast,var(--bs-switch-indicator-bg));border-radius:10rem;transition:inset-inline-start .15s ease-in-out;position:absolute;inset-inline-start:var(--bs-switch-padding);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))}.switch:has(input:checked):before{inset-inline-start:calc(100% - var(--bs-switch-indicator-width) - 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-fg);cursor:default}.switch-sm{--bs-switch-height:1rem}.switch-sm+label{font-size:var(--bs-font-size-sm)}.switch-lg{--bs-switch-height:1.5rem;--bs-switch-margin-block:.375rem}.switch-lg+label{font-size:var(--bs-font-size-lg)}.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:var(--bs-range-thumb-bg) solid var(--bs-border-color);--bs-range-thumb-border-radius:1rem;--bs-range-thumb-box-shadow:0 1px 2px #00000013, 0 2px 4px #00000013;--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:hover::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range:hover::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range:focus-visible{outline:0}.form-range:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.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);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);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);background-image:var(--bs-gradient)}.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);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);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);background-image:var(--bs-gradient)}.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-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-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;-webkit-user-select: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-radius-5);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){cursor:not-allowed;background-color:var(--bs-bg-2);opacity:1}.chip-input.disabled:focus-within,.chip-input:has(.form-ghost:disabled):focus-within{border-color:var(--bs-control-border-color);outline:0}.chip-input.disabled>.chip,.chip-input:has(.form-ghost:disabled)>.chip{pointer-events:none;opacity:var(--bs-control-disabled-opacity)}.form-field{gap:.5rem;display:grid;position:relative}.form-field>label,.form-field>.form-label{justify-self:start;margin-bottom:0}.form-field:has(>.check,>.radio,>.switch){grid-template-columns:auto 1fr;align-items:start;column-gap:.5rem}.form-field:has(>.check,>.radio,>.switch)>.check,.form-field:has(>.check,>.radio,>.switch)>.radio,.form-field:has(>.check,>.radio,>.switch)>.switch{grid-column:1}.form-field:has(>.check,>.radio,>.switch)>:not(.check,.radio,.switch){grid-column:2}.form-field:has(>.check,>.radio,>.switch)>.form-label{grid-column:1/-1}.form-field-content{flex-direction:column;align-items:flex-start;display:flex}.form-field-card{padding:calc(var(--bs-spacer) * .75);cursor:pointer;border:var(--bs-border-width) solid transparent;border-radius:var(--bs-radius-7);position:relative}.form-field-card:hover{background-color:var(--bs-bg-1)}.form-field-card:has(:checked){background-color:var(--bs-bg-1);border-color:var(--bs-border-color)}.form-field-card label:before{content:"";position:absolute;inset:0}.form-group{gap:.5rem;display:grid}.form-group>label,.form-group>.form-label,.form-group>legend{justify-self:start;margin-bottom:0}}@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);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(:last-child,.menu-toggle-split,.menu,.input-group-ignore,.form-floating,:has(+:is(.menu,.input-group-ignore):last-child)),.input-group>.menu-toggle-split:nth-last-child(n+3),.input-group>.form-floating:not(:last-child)>.form-control,.input-group>.form-floating:not(:last-child)>.form-select{border-start-end-radius:0;border-end-end-radius:0}.input-group>:not(:first-child,.menu,.input-group-ignore){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1 * var(--bs-border-width))}.input-group>:first-child.input-group-ignore+:not(.menu,.input-group-ignore){border-start-start-radius:var(--bs-btn-input-border-radius);border-end-start-radius:var(--bs-btn-input-border-radius)}.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;--bs-otp-slot-fg:var(--bs-btn-input-fg);--bs-otp-slot-bg:var(--bs-btn-input-bg);--bs-otp-slot-border-width:var(--bs-border-width);--bs-otp-slot-border-color:var(--bs-border-color);--bs-otp-slot-border-radius:var(--bs-radius-5);display:flex;position:relative}.otp-rendered .otp-input{color:#0000;text-align:center;cursor:default;caret-color:#0000;width:100%;height:100%;box-shadow:none;background-color:#0000;border:0;outline:0;padding:0;position:absolute;inset:0}.otp-rendered .otp-input::selection{color:#0000;background-color:#0000}.otp-slots{gap:var(--bs-otp-gap);pointer-events:none;display:inline-flex}.otp-slot{width:var(--bs-otp-size);min-height:var(--bs-otp-size);font-size:var(--bs-otp-font-size);color:var(--bs-otp-slot-fg);background-color:var(--bs-otp-slot-bg);border:var(--bs-otp-slot-border-width) solid var(--bs-otp-slot-border-color);border-radius:var(--bs-otp-slot-border-radius);box-shadow:var(--bs-box-shadow-inset);justify-content:center;align-items:center;font-weight:500;line-height:1;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex}@media (prefers-reduced-motion:reduce){.otp-slot{transition:none}}.otp-slot-active{--bs-focus-ring-offset:-1px;z-index:1;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.otp-slot-active:not(.otp-slot-filled):after{content:"";background-color:var(--bs-otp-slot-fg);width:1px;height:50%;animation:1s step-end infinite otp-caret-blink}.otp-input:disabled~.otp-slots .otp-slot{background-color:var(--bs-bg-2)}.otp-connected .otp-slots{gap:0}.otp-connected .otp-slot{border-radius:0}.otp-connected .otp-slot:not(:first-child){margin-inline-start:calc(var(--bs-otp-slot-border-width) * -1)}.otp-connected .otp-slot:first-child{border-start-start-radius:var(--bs-otp-slot-border-radius);border-end-start-radius:var(--bs-otp-slot-border-radius)}.otp-connected .otp-slot:last-child{border-start-end-radius:var(--bs-otp-slot-border-radius);border-end-end-radius:var(--bs-otp-slot-border-radius)}.otp-separator{padding-inline:var(--bs-otp-gap);font-size:var(--bs-otp-font-size);color:var(--bs-fg-4);-webkit-user-select:none;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)}.otp-lg{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-lg-font-size)}.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}.valid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-success-fg);display:none}.tooltip.valid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-success-contrast);text-align:center;background-color:var(--bs-success-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,:is([data-bs-validate~=valid] :user-valid~.valid-feedback,[data-bs-validate~=valid] :user-valid~.valid-tooltip){display:block}.form-control.is-valid{--bs-control-border-color:var(--bs-success-border)}.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);--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid{--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-success-border)}.check.is-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}.check.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .check:user-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .check:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.check.is-valid) .valid-feedback,.form-field:has(.check.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.check:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip){display:block}.radio.is-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}.radio.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .radio:user-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .radio:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.radio.is-valid) .valid-feedback,.form-field:has(.radio.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.radio:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip){display:block}.switch:has(input.is-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}.switch:has(input.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .switch:has(input:user-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .switch:has(input:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.switch input.is-valid) .valid-feedback,.form-field:has(.switch input.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip){display:block}.chip-input:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.chip-input:has(.form-ghost.is-valid):focus-within{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)}.chip-input:has(.form-ghost.is-valid)~.valid-feedback,.chip-input:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within{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)}:is([data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-adorn:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.form-adorn:has(.form-ghost.is-valid):focus-within{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)}.form-adorn:has(.form-ghost.is-valid)~.valid-feedback,.form-adorn:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within{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)}:is([data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-range.is-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}.form-range.is-valid::-moz-range-thumb{background:var(--bs-success-bg)}.form-range.is-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range.is-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range.is-valid~.valid-feedback,.form-range.is-valid~.valid-tooltip{display:block}[data-bs-validate~=valid] .form-range:user-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range:user-valid::-moz-range-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range:user-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range:user-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}:is([data-bs-validate~=valid] .form-range:user-valid~.valid-feedback,[data-bs-validate~=valid] .form-range:user-valid~.valid-tooltip),.form-field:has(.input-group .form-control.is-valid) .valid-feedback,.form-field:has(.input-group .form-control.is-valid) .valid-tooltip,:is([data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip){display:block}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,:is([data-bs-validate~=valid] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-valid){z-index:3}.otp.is-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}.otp.is-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .otp:user-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .otp:user-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.invalid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-danger-fg);display:none}.tooltip.invalid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-danger-contrast);text-align:center;background-color:var(--bs-danger-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,:is([data-bs-validate] :user-invalid~.invalid-feedback,[data-bs-validate] :user-invalid~.invalid-tooltip){display:block}.form-control.is-invalid{--bs-control-border-color:var(--bs-danger-border)}.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);--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid{--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-danger-border)}.check.is-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}.check.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .check:user-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .check:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.check.is-invalid) .invalid-feedback,.form-field:has(.check.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.check:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip){display:block}.radio.is-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}.radio.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .radio:user-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .radio:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.radio.is-invalid) .invalid-feedback,.form-field:has(.radio.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.radio:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip){display:block}.switch:has(input.is-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}.switch:has(input.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .switch:has(input:user-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .switch:has(input:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.switch input.is-invalid) .invalid-feedback,.form-field:has(.switch input.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.switch input:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip){display:block}.chip-input:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.chip-input:has(.form-ghost.is-invalid):focus-within{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)}.chip-input:has(.form-ghost.is-invalid)~.invalid-feedback,.chip-input:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within{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)}:is([data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-adorn:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.form-adorn:has(.form-ghost.is-invalid):focus-within{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)}.form-adorn:has(.form-ghost.is-invalid)~.invalid-feedback,.form-adorn:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within{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)}:is([data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-range.is-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}.form-range.is-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}.form-range.is-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range.is-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range.is-invalid~.invalid-feedback,.form-range.is-invalid~.invalid-tooltip{display:block}[data-bs-validate] .form-range:user-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range:user-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range:user-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range:user-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}:is([data-bs-validate] .form-range:user-invalid~.invalid-feedback,[data-bs-validate] .form-range:user-invalid~.invalid-tooltip),.form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,.form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip,:is([data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip){display:block}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,:is([data-bs-validate] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-invalid){z-index:4}.otp.is-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}.otp.is-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .otp:user-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}[data-bs-validate] .otp:user-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.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-radius-5);--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;-webkit-user-select:none;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);background-image:none}.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-fg);--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-fg);--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-fg);--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-fg);--bs-btn-border-color:transparent;--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-fg-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-fg);--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-fg-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-fg-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-fg);--bs-btn-disabled-border-color:transparent}.btn-text{--bs-btn-color:var(--bs-theme-fg);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-active-color:oklch(from var(--bs-theme-fg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-text:hover{--bs-btn-hover-color:oklch(from var(--bs-theme-fg) 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-fg) 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-fg);--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-fg,var(--bs-btn-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);background-image:none}.btn-link:focus-visible{color:var(--bs-theme-fg,var(--bs-btn-color))}.btn-link:hover{color:var(--bs-theme-fg-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);background-image:none}.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;background-image: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-group-divider>[class*=btn-]+[class*=btn-]:before{z-index:3;content:"";background-color:var(--bs-btn-color);opacity:.25;position:absolute}.btn-group:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:25%;bottom:25%;left:calc(var(--bs-btn-border-width) * -1);width:var(--bs-btn-border-width)}.btn-group-vertical:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:calc(var(--bs-btn-border-width) * -1);right:var(--bs-btn-padding-x);left:var(--bs-btn-padding-x);height:var(--bs-btn-border-width)}.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,:has(+.menu)),.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}.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,:has(+.menu)),.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.5rem;--bs-btn-close-color:inherit;--bs-btn-close-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e");--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-radius-5);opacity:var(--bs-btn-close-opacity);mask-image:var(--bs-btn-close-icon);background-color:currentColor;border:0;padding:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.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;-webkit-user-select: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-radius-7));--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::-webkit-details-marker{display: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)}@media (prefers-reduced-motion:no-preference){.accordion-item{interpolate-size:allow-keywords}}.accordion-item::details-content{block-size:0;transition:content-visibility .2s allow-discrete, block-size .2s;overflow-y:clip}@media (prefers-reduced-motion:reduce){.accordion-item::details-content{transition:none}}.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]::details-content{block-size:auto}.accordion-item[open]>.accordion-header{color:var(--bs-theme-fg,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:var(--bs-spacer-3);--bs-alert-bg:var(--bs-theme-bg-subtle,var(--bs-bg-1));--bs-alert-padding-x:var(--bs-spacer);--bs-alert-padding-y:var(--bs-spacer);--bs-alert-color:var(--bs-theme-fg,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-radius-5);--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>p{margin-bottom:0}.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>.avatar-img{object-fit:cover;width:100%;height:100%}.avatar-subtle{color:var(--bs-theme-fg,var(--bs-avatar-color));background-color:var(--bs-theme-bg-subtle,var(--bs-avatar-bg))}.avatar-img{border-radius:var(--bs-avatar-border-radius,50%)}.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>.avatar{--bs-avatar-size:1.5rem;--bs-avatar-status-size:.625rem}.avatar-sm,.avatar-stack-sm>.avatar{--bs-avatar-size:2rem}.avatar-lg,.avatar-stack-lg>.avatar{--bs-avatar-size:3rem;--bs-avatar-status-size:1rem;--bs-avatar-border-width:3px}.avatar-xl,.avatar-stack-xl>.avatar{--bs-avatar-size:4rem;--bs-avatar-status-size:1.25rem;--bs-avatar-border-width:4px}.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-radius-7);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-fg);--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-fg);--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-radius-5);--bs-breadcrumb-divider-color:var(--bs-fg-4);--bs-breadcrumb-divider-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e");--bs-breadcrumb-divider-width:.375rem;--bs-breadcrumb-divider-height:.75rem;--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-radius-7);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-divider:empty:before{width:var(--bs-breadcrumb-divider-width);height:var(--bs-breadcrumb-divider-height);content:"";mask-image:var(--bs-breadcrumb-divider-icon);background-color:currentColor;display:block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.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-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-fg,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);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:var(--bs-spacer-5);--bs-card-spacer-x:var(--bs-spacer-5);--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-radius-7);--bs-card-box-shadow:none;--bs-card-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-card-cap-padding-y:var(--bs-spacer-3);--bs-card-cap-padding-x:var(--bs-spacer);--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:var(--bs-card-spacer-y);--bs-card-group-margin:.75rem;--bs-card-body-gap:calc(var(--bs-card-spacer-y) * .5);min-width:0;height:var(--bs-card-height);color:var(--bs-fg-body);word-wrap:break-word;background-color:var(--bs-card-bg);border-radius:var(--bs-card-border-radius);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,:last-child),.card-list:not(:first-child,: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-translucent{background-color:color-mix(in oklch, var(--bs-card-bg) 80%, transparent);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))}.card-subtle .card-header,.card-subtle .card-footer{color:var(--bs-theme-fg-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,:last-child),.card-row .card-list:not(:first-child,: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,.card-group>.card:not(:last-child)>.card-body{border-start-end-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-body{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,.card-group>.card:not(:first-child)>.card-body{border-start-start-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-body{border-end-start-radius:0}}.carousel{--bs-carousel-gap:.75rem;--bs-carousel-indicator-bg:var(--bs-fg-3);--bs-carousel-indicator-width:.75rem;--bs-carousel-indicator-height:.75rem;--bs-carousel-indicator-spacer:.25rem;--bs-carousel-indicator-transition:opacity .6s ease, width .3s ease;--bs-carousel-indicator-progress-bg:var(--bs-carousel-indicator-bg);--bs-carousel-control-icon-width:1rem;--bs-carousel-control-prev-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>");--bs-carousel-control-play-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>");--bs-carousel-items:1;--bs-carousel-items-gap:0px;--bs-carousel-items-peek:0px;--bs-carousel-fade-duration:.6s;gap:var(--bs-carousel-gap);flex-direction:column;display:flex;position:relative}.carousel-inner{gap:var(--bs-carousel-items-gap);width:100%;padding-inline:var(--bs-carousel-items-peek);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--bs-carousel-items-peek);scrollbar-width:none;display:flex;overflow-x:auto}.carousel-inner::-webkit-scrollbar{display:none}@media (prefers-reduced-motion:no-preference){.carousel-inner{scroll-behavior:smooth}}.carousel-item{flex:0 0 calc((100% - (var(--bs-carousel-items) - 1) * var(--bs-carousel-items-gap)) / var(--bs-carousel-items));scroll-snap-align:start;scroll-snap-stop:always;min-width:0}.carousel-center .carousel-item{scroll-snap-align:center}.carousel-auto .carousel-item{flex-basis:auto}.carousel-fade .carousel-inner{scroll-snap-type:none;display:grid;overflow:hidden}.carousel-fade .carousel-item{visibility:hidden;opacity:0;width:100%;transition:opacity var(--bs-carousel-fade-duration) ease, visibility 0s linear var(--bs-carousel-fade-duration);grid-area:1/1}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item{transition:none}}.carousel-fade .carousel-item.active{visibility:visible;opacity:1;transition:opacity var(--bs-carousel-fade-duration) ease}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item.active{transition:none}}.carousel-icon-prev,.carousel-icon-next,.carousel-icon-pause,.carousel-icon-play{width:var(--bs-carousel-control-icon-width);height:var(--bs-carousel-control-icon-width);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:100% 100%;mask-repeat:no-repeat}.carousel-icon-prev{mask-image:var(--bs-carousel-control-prev-icon)}.carousel-icon-next{mask-image:var(--bs-carousel-control-next-icon)}[dir=rtl] .carousel-icon-prev,[dir=rtl] .carousel-icon-next{transform:scaleX(-1)}.carousel-icon-pause{mask-image:var(--bs-carousel-control-pause-icon)}.carousel-icon-play{mask-image:var(--bs-carousel-control-play-icon)}.carousel-control-play-pause .carousel-icon-play,.carousel-control-play-pause.paused .carousel-icon-pause{display:none}.carousel-control-play-pause.paused .carousel-icon-play{display:inline-block}.carousel-indicators{gap:var(--bs-carousel-indicator-spacer);justify-content:center;display:flex}.carousel-indicators [data-bs-target]{width:var(--bs-carousel-indicator-width);height:var(--bs-carousel-indicator-height);cursor:pointer;border:1px solid var(--bs-carousel-indicator-bg);border-radius:var(--bs-carousel-indicator-width);transition:var(--bs-carousel-indicator-transition);background-color:#0000;flex:0 auto;padding:0}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{width:calc(var(--bs-carousel-indicator-width) * 2.5);background-color:var(--bs-carousel-indicator-bg);border-color:var(--bs-carousel-indicator-bg)}@keyframes carousel-indicator-progress{0%{inline-size:0}to{inline-size:100%}}@media (prefers-reduced-motion:no-preference){.carousel-playing .carousel-indicators .active{background-color:#0000;position:relative;overflow:hidden}.carousel-playing .carousel-indicators .active:after{content:"";background-color:var(--bs-carousel-indicator-progress-bg);inline-size:0;animation:carousel-indicator-progress var(--bs-carousel-interval,5s) linear forwards;position:absolute;inset-block:0;inset-inline-start:0}}.carousel-overlay{--bs-carousel-indicator-bg:light-dark(var(--bs-white),var(--bs-black))}.carousel-overlay .carousel-overlay-controls{z-index:1;justify-content:space-between;align-items:center;display:flex;position:absolute;inset-block-end:1rem;inset-inline:1rem}[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-radius-7);--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);box-shadow:var(--bs-datepicker-box-shadow);opacity:1;border-radius:var(--bs-datepicker-border-radius);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-radius-5);background-color:#0000;border:0;display:block;position:relative}[data-vc-arrow]:before{content:"";background-color:var(--bs-datepicker-color);position:absolute;inset:.25rem;mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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>");mask-position:50%;mask-repeat:no-repeat}[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-radius-5);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));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-radius-5);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-radius-5);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-radius-5);border-end-start-radius:var(--bs-radius-5)}[data-vc-date-hover=last] [data-vc-date-btn]{border-start-end-radius:var(--bs-radius-5);border-end-end-radius:var(--bs-radius-5)}[data-vc-date-hover=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}[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-radius-5);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bs-radius-5)}[data-vc-date-selected=last] [data-vc-date-btn]{border-top-left-radius:0;border-top-right-radius:var(--bs-radius-5);border-bottom-right-radius:var(--bs-radius-5);border-bottom-left-radius:0}[data-vc-date-selected=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}.dialog-open{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-radius-7);--bs-dialog-box-shadow:var(--bs-box-shadow-lg);--bs-dialog-transition-duration:.3s;--bs-dialog-transition-timing:cubic-bezier(.22, 1, .36, 1);--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;width:var(--bs-dialog-width);max-width:calc(100% - var(--bs-dialog-margin) * 2);max-height:calc(100% - var(--bs-dialog-margin) * 2);color:var(--bs-dialog-color);visibility:hidden;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;flex-direction:column;margin:auto;padding:0;display:flex;overflow:visible}.dialog:not(.dialog-instant){opacity:0;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s var(--bs-dialog-transition-duration)}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant){transition:none}}.dialog:not(.dialog-instant).dialog-slide-down{transform:translateY(-3rem)}.dialog:not(.dialog-instant).dialog-slide-up{transform:translateY(3rem)}.dialog:not(.dialog-instant)[open]:not(.hiding){visibility:visible;opacity:1;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s;overflow:visible}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)[open]:not(.hiding){transition:none}}.dialog:not(.dialog-instant)[open]:not(.hiding){transform:none}.dialog:not(.dialog-instant)[open].dialog-static:not(.hiding){transform:scale(1.02)}.dialog:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur));transition:background-color var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), backdrop-filter var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), display var(--bs-dialog-transition-duration) allow-discrete, overlay var(--bs-dialog-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)::backdrop{transition:none}}.dialog:not(.dialog-instant).hiding::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-instant::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}.dialog[open]:not(.hiding){visibility:visible;opacity:1;overflow:visible;transform:none}.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-scrollable[open]{max-height:calc(100% - var(--bs-dialog-margin) * 2)}.dialog.dialog-scrollable[open] .dialog-body{overflow-y:auto}@starting-style{.dialog:not(.dialog-instant)::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-swap-in:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}}.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){.sm-down\: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<768px){.md-down\: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<1024px){.lg-down\: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<1280px){.xl-down\: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<1536px){.\32 xl-down\: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}}.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{line-height:1.5;font-size:var(--bs-font-size-md);margin-bottom:0}.dialog-body{padding:var(--bs-dialog-padding);flex:auto;position:relative}.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-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:.5rem;--bs-menu-item-padding-x:.75rem;--bs-menu-item-padding-y:.25rem;--bs-menu-item-border-radius:var(--bs-radius-5);--bs-menu-icon-size:1rem;--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:.75rem;--bs-menu-header-padding-y:.25rem;--bs-menu-transition-duration:.15s;--bs-menu-transition-timing:cubic-bezier(.22, 1, .36, 1);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-radius-7));box-shadow:var(--bs-menu-box-shadow);opacity:0;transform-origin:top start;background-clip:padding-box;flex-direction:column;margin:0;list-style:none;display:none;position:absolute;transform:scale(.95)}.menu[data-bs-placement^=top]{transform-origin:bottom start}.menu[data-bs-placement=bottom-end]{transform-origin:top end}.menu[data-bs-placement=top-end]{transform-origin:bottom end}.menu[data-bs-placement^=left]{transform-origin:top end}.menu{transition:opacity var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), transform var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), display var(--bs-menu-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.menu{transition:none}}.menu.show{opacity:1;display:flex;transform:none}@starting-style{.menu.show{opacity:0;transform:scale(.95)}}.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-fg,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-fg-emphasis,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.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:#0000;background-image:none}.menu-item-icon{width:var(--bs-menu-icon-size);flex-shrink:0;align-self:flex-start;height:auto;margin-top:.125rem}.menu-item-content{flex-direction:column;flex:1;min-width:fit-content;display:flex}.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{color:var(--bs-menu-check-color);visibility:hidden;flex-shrink:0;align-self:flex-start;margin-block-start:.125rem;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)}.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-radius-5);--bs-list-group-item-padding-x:var(--bs-spacer);--bs-list-group-item-padding-y:var(--bs-spacer-2);--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-fg,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-fg,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-fg-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-fg-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){.sm\:list-group-horizontal{flex-direction:row}.sm\: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)}.sm\: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}.sm\:list-group-horizontal>.list-group-item.active{margin-top:0}.sm\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.sm\: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>=768px){.md\:list-group-horizontal{flex-direction:row}.md\: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)}.md\: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}.md\:list-group-horizontal>.list-group-item.active{margin-top:0}.md\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.md\: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>=1024px){.lg\:list-group-horizontal{flex-direction:row}.lg\: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)}.lg\: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}.lg\:list-group-horizontal>.list-group-item.active{margin-top:0}.lg\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.lg\: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>=1280px){.xl\:list-group-horizontal{flex-direction:row}.xl\: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)}.xl\: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}.xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.xl\: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>=1536px){.\32 xl\:list-group-horizontal{flex-direction:row}.\32 xl\: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)}.\32 xl\: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}.\32 xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.\32 xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.\32 xl\: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))}}.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-radius-5);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-radius-5);--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-bg:var(--bs-bg-1);--bs-nav-pills-padding:.25rem;--bs-nav-pills-border-radius:var(--bs-radius-9);--bs-nav-pills-link-active-color:var(--bs-primary-contrast);--bs-nav-pills-link-active-bg:var(--bs-primary-bg);--bs-nav-pills-link-border-radius:var(--bs-radius-9);padding:var(--bs-nav-pills-padding);background-color:var(--bs-nav-pills-bg);border-radius:var(--bs-nav-pills-border-radius);display:inline-flex}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-link-border-radius)}.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);background-image:var(--bs-gradient)}.nav-pills-vertical{flex-direction:column;align-items:stretch}.nav-pills-vertical .nav-item,.nav-pills-vertical .nav-link{width:100%}.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-pills.nav-overflow{display:flex}.navbar-nav.nav-overflow{flex:1 1 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-radius-5);--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;--bs-navbar-toggler-icon-size:1.25rem;--bs-navbar-toggler-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e");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>.\32 xl\:container,.navbar>.xl\:container,.navbar>.lg\:container,.navbar>.md\:container,.navbar>.sm\:container,.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-toggler-icon{width:var(--bs-navbar-toggler-icon-size);height:var(--bs-navbar-toggler-icon-size);mask-image:var(--bs-navbar-toggler-icon);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.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 [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.navbar-expand [class*=drawer] .drawer-header{display:none!important}.navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}@container (width>=576px){.sm\:navbar-expand>.container,.sm\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.sm\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.sm\:navbar-expand .navbar-toggler{display:none!important}.sm\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.sm\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.sm\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=768px){.md\:navbar-expand>.container,.md\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.md\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.md\:navbar-expand .navbar-toggler{display:none!important}.md\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.md\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.md\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1024px){.lg\:navbar-expand>.container,.lg\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.lg\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.lg\:navbar-expand .navbar-toggler{display:none!important}.lg\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.lg\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.lg\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1280px){.xl\:navbar-expand>.container,.xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.xl\:navbar-expand .navbar-toggler{display:none!important}.xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1536px){.\32 xl\:navbar-expand>.container,.\32 xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.\32 xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.\32 xl\:navbar-expand .navbar-toggler{display:none!important}.\32 xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}.navbar [class*=drawer]:not([open],.hiding){transition:none!important}@media (prefers-reduced-motion:reduce){.navbar [class*=drawer]:not([open],.hiding){transition:none}}.navbar-translucent{background-color:#0000;position:relative}.navbar-translucent:before{z-index:-1;content:"";background-color:color-mix(in oklch, var(--bs-navbar-bg,var(--bs-bg-body)) 80%, transparent);backdrop-filter:blur(5px)saturate(180%);background-image:none;position:absolute;inset:0}.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){.sm\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.sm\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.sm\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant){transition:none}}@media (width<576px){.sm\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-start),.sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-bottom),.sm\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<576px){.sm\:drawer[open]{visibility:visible;transform:none}}@media (width>=576px){.sm\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=576px) and (prefers-reduced-motion:reduce){.sm\:drawer{transition:none}}@media (width>=576px){.sm\:drawer .drawer-header{display:none}.sm\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<768px){.md\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.md\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.md\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant){transition:none}}@media (width<768px){.md\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-start),.md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-bottom),.md\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<768px){.md\:drawer[open]{visibility:visible;transform:none}}@media (width>=768px){.md\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=768px) and (prefers-reduced-motion:reduce){.md\:drawer{transition:none}}@media (width>=768px){.md\:drawer .drawer-header{display:none}.md\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1024px){.lg\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.lg\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.lg\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant){transition:none}}@media (width<1024px){.lg\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-start),.lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-bottom),.lg\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1024px){.lg\:drawer[open]{visibility:visible;transform:none}}@media (width>=1024px){.lg\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1024px) and (prefers-reduced-motion:reduce){.lg\:drawer{transition:none}}@media (width>=1024px){.lg\:drawer .drawer-header{display:none}.lg\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1280px){.xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1280px){.xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-start),.xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1280px){.xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1280px){.xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1280px) and (prefers-reduced-motion:reduce){.xl\:drawer{transition:none}}@media (width>=1280px){.xl\:drawer .drawer-header{display:none}.xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1536px){.\32 xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.\32 xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.\32 xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1536px){.\32 xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-start),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1536px){.\32 xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1536px){.\32 xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer{transition:none}}@media (width>=1536px){.\32 xl\:drawer .drawer-header{display:none}.\32 xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}.drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant){transition:none}}.drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start),.drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-bottom),.drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant)[open]{transition:none}}.drawer:not(.drawer-instant)[open]{transform:none}.drawer[open]{visibility:visible;transform:none}.sm\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.sm\:drawer::backdrop{transition:none}}.md\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.md\:drawer::backdrop{transition:none}}.lg\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.lg\:drawer::backdrop{transition:none}}.xl\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.xl\:drawer::backdrop{transition:none}}.\32 xl\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.\32 xl\:drawer::backdrop{transition:none}}.drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.drawer::backdrop{transition:none}}@starting-style{.sm\:drawer::backdrop,.md\:drawer::backdrop,.lg\:drawer::backdrop,.xl\:drawer::backdrop,.\32 xl\:drawer::backdrop,.drawer::backdrop{backdrop-filter:blur();background-color:#0000}}.drawer-static{transform:scale(1.02)}.drawer-translucent{background-color:color-mix(in oklch, var(--bs-drawer-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.drawer-sheet{--bs-drawer-inset:0;--bs-drawer-border-radius:0;--bs-drawer-border-width:0;--bs-drawer-box-shadow:none}.drawer-header{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-shrink:0;align-items:center;display:flex}.drawer-header .btn-close{margin-block:calc(-.5 * var(--bs-drawer-padding-y));margin-inline-start:auto}.drawer-title{line-height:var(--bs-drawer-title-line-height);margin-bottom:0}.drawer-body{gap:var(--bs-drawer-padding-y);padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.drawer-footer{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);border-block-start:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.drawer-fit-content{inset-block-end:auto}.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);background-image:var(--bs-gradient);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{mask-image:linear-gradient(130deg, #000 55%, rgb(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-radius-7);--bs-popover-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:var(--bs-spacer);--bs-popover-header-padding-y:var(--bs-spacer-3);--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:var(--bs-spacer);--bs-popover-body-padding-y:var(--bs-spacer-3);--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-radius-5);--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}}.stepper{--bs-stepper-size:2rem;--bs-stepper-gap:1rem;--bs-stepper-font-size:var(--bs-font-size-sm);--bs-stepper-text-gap:.5rem;--bs-stepper-track-size:.125rem;--bs-stepper-bg:var(--bs-bg-2);--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-inline-start:0;list-style:none;display:grid}.stepper-item{grid-template-rows:auto;grid-template-columns:var(--bs-stepper-size) auto;gap:var(--bs-stepper-text-gap);align-items:var(--bs-stepper-align-items,center);text-decoration:none;display:grid;position:relative}.stepper-item:before{z-index:1;width:var(--bs-stepper-size);height:var(--bs-stepper-size);font-size:var(--bs-stepper-font-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{width:var(--bs-stepper-track-size);height:calc(100% + var(--bs-stepper-gap));content:"";background-color:var(--bs-stepper-bg);position:absolute;inset-block:50% 100%;inset-inline-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5)}.stepper-item:last-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-item.active:not(:has(+.stepper-item.active)):after{background-color:var(--bs-stepper-bg)}.stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.stepper-horizontal .stepper-item:last-child:after{right:100%}@container (width>=576px){.sm\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.sm\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.sm\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.sm\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=768px){.md\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.md\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.md\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.md\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1024px){.lg\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.lg\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.lg\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.lg\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1280px){.xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1536px){.\32 xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.\32 xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.\32 xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.\32 xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}.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%}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:1rem;--bs-toast-padding-y:.75rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:var(--bs-font-size-sm);--bs-toast-bg:var(--bs-bg-body);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-fg-3);--bs-toast-header-bg:var(--bs-bg-1);--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,var(--bs-fg-body));pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-theme-border,var(--bs-toast-border-color));box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius,var(--bs-radius-7));background-clip:padding-box;flex-direction:column;display:flex;overflow:hidden}.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-theme-fg-emphasis,var(--bs-toast-header-color));background-color:var(--bs-theme-bg-subtle,var(--bs-toast-header-bg));border-block-end:var(--bs-toast-border-width,var(--bs-border-width)) solid var(--bs-theme-border,var(--bs-toast-header-border-color,var(--bs-border-color-translucent)));align-items:center;display:flex}.toast-header .btn-close{color:inherit;margin-inline-start:calc(.5 * var(--bs-toast-padding-x));margin-inline-end:calc(-.25 * var(--bs-toast-padding-x))}.toast-translucent{backdrop-filter:blur(5px)saturate(180%)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:var(--bs-spacer-3);--bs-tooltip-padding-y:calc(var(--bs-spacer) * .375);--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-radius-5);--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)}}@layer custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-theme-focus-ring,var(--bs-focus-ring-color))}.icon-link{-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity,.5));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){.sm\:sticky-top{z-index:1020;position:sticky;top:0}.sm\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.md\:sticky-top{z-index:1020;position:sticky;top:0}.md\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.lg\:sticky-top{z-index:1020;position:sticky;top:0}.lg\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.xl\:sticky-top{z-index:1020;position:sticky;top:0}.xl\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.\32 xl\:sticky-top{z-index:1020;position:sticky;top:0}.\32 xl\:sticky-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){.sm\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.sm\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.md\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.md\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.lg\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.lg\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.\32 xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.\32 xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-fg:var(--bs-primary-fg);--bs-theme-fg-emphasis:var(--bs-primary-fg-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-fg:var(--bs-accent-fg);--bs-theme-fg-emphasis:var(--bs-accent-fg-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-fg:var(--bs-success-fg);--bs-theme-fg-emphasis:var(--bs-success-fg-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-fg:var(--bs-danger-fg);--bs-theme-fg-emphasis:var(--bs-danger-fg-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-fg:var(--bs-warning-fg);--bs-theme-fg-emphasis:var(--bs-warning-fg-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-fg:var(--bs-info-fg);--bs-theme-fg-emphasis:var(--bs-info-fg-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-fg:var(--bs-inverse-fg);--bs-theme-fg-emphasis:var(--bs-inverse-fg-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-fg:var(--bs-secondary-fg);--bs-theme-fg-emphasis:var(--bs-secondary-fg-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,: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,:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus,: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{object-fit:contain}.object-fit-cover{object-fit:cover}.object-fit-fill{object-fit:fill}.object-fit-scale{object-fit:scale-down}.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}.contains-inline{container-type:inline-size}.contains-size{container-type:size}.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}.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{inset-inline-start:0}.start-50{inset-inline-start:50%}.start-100{inset-inline-start:100%}.end-0{inset-inline-end:0}.end-50{inset-inline-end:50%}.end-100{inset-inline-end: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-y{border-block:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-y-0{border-block:0}.border-x{border-inline:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-x-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-primary-bg);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-accent-bg);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-success-bg);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-danger-bg);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-warning-bg);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-info-bg);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:var(--bs-inverse-bg);border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:var(--bs-secondary-bg);border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-border-bg);border-color:var(--bs-border-color)}.border-body{--bs-border-color:var(--bs-border-body);border-color:var(--bs-border-color)}.border-muted{--bs-border-color:var(--bs-border-muted);border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:var(--bs-border-subtle);border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:var(--bs-border-emphasized);border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-border-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-border-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:var(--bs-primary-border);border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:var(--bs-accent-border);border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:var(--bs-success-border);border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:var(--bs-danger-border);border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:var(--bs-warning-border);border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:var(--bs-info-border);border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:var(--bs-inverse-border);border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:var(--bs-secondary-border);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:start}.justify-self-end{justify-self: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-1{grid-template-columns:1fr}.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-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:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-7{margin:2rem}.m-8{margin:2.5rem}.m-9{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:.75rem}.mx-4{margin-inline:1rem}.mx-5{margin-inline:1.25rem}.mx-6{margin-inline:1.5rem}.mx-7{margin-inline:2rem}.mx-8{margin-inline:2.5rem}.mx-9{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:.75rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.my-6{margin-block:1.5rem}.my-7{margin-block:2rem}.my-8{margin-block:2.5rem}.my-9{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:.75rem}.mt-4{margin-block-start:1rem}.mt-5{margin-block-start:1.25rem}.mt-6{margin-block-start:1.5rem}.mt-7{margin-block-start:2rem}.mt-8{margin-block-start:2.5rem}.mt-9{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:.75rem}.me-4{margin-inline-end:1rem}.me-5{margin-inline-end:1.25rem}.me-6{margin-inline-end:1.5rem}.me-7{margin-inline-end:2rem}.me-8{margin-inline-end:2.5rem}.me-9{margin-inline-end:3rem}.me--1{margin-inline-end:-.25rem}.me--2{margin-inline-end:-.5rem}.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:.75rem}.mb-4{margin-block-end:1rem}.mb-5{margin-block-end:1.25rem}.mb-6{margin-block-end:1.5rem}.mb-7{margin-block-end:2rem}.mb-8{margin-block-end:2.5rem}.mb-9{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:.75rem}.ms-4{margin-inline-start:1rem}.ms-5{margin-inline-start:1.25rem}.ms-6{margin-inline-start:1.5rem}.ms-7{margin-inline-start:2rem}.ms-8{margin-inline-start:2.5rem}.ms-9{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:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:2rem}.p-8{padding:2.5rem}.p-9{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-5{padding-inline:1.25rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:2rem}.px-8{padding-inline:2.5rem}.px-9{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.py-5{padding-block:1.25rem}.py-6{padding-block:1.5rem}.py-7{padding-block:2rem}.py-8{padding-block:2.5rem}.py-9{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:.75rem}.pt-4{padding-block-start:1rem}.pt-5{padding-block-start:1.25rem}.pt-6{padding-block-start:1.5rem}.pt-7{padding-block-start:2rem}.pt-8{padding-block-start:2.5rem}.pt-9{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:.75rem}.pe-4{padding-inline-end:1rem}.pe-5{padding-inline-end:1.25rem}.pe-6{padding-inline-end:1.5rem}.pe-7{padding-inline-end:2rem}.pe-8{padding-inline-end:2.5rem}.pe-9{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:.75rem}.pb-4{padding-block-end:1rem}.pb-5{padding-block-end:1.25rem}.pb-6{padding-block-end:1.5rem}.pb-7{padding-block-end:2rem}.pb-8{padding-block-end:2.5rem}.pb-9{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:.75rem}.ps-4{padding-inline-start:1rem}.ps-5{padding-inline-start:1.25rem}.ps-6{padding-inline-start:1.5rem}.ps-7{padding-inline-start:2rem}.ps-8{padding-inline-start:2.5rem}.ps-9{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:2rem}.gap-8{gap:2.5rem}.gap-9{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:.75rem}.row-gap-4{row-gap:1rem}.row-gap-5{row-gap:1.25rem}.row-gap-6{row-gap:1.5rem}.row-gap-7{row-gap:2rem}.row-gap-8{row-gap:2.5rem}.row-gap-9{row-gap:3rem}.column-gap-0{column-gap:0}.column-gap-1{column-gap:.25rem}.column-gap-2{column-gap:.5rem}.column-gap-3{column-gap:.75rem}.column-gap-4{column-gap:1rem}.column-gap-5{column-gap:1.25rem}.column-gap-6{column-gap:1.5rem}.column-gap-7{column-gap:2rem}.column-gap-8{column-gap:2.5rem}.column-gap-9{column-gap:3rem}:where(.space-x-0>:not(:last-child)){margin-inline-end:0}:where(.space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.space-y-0>:not(:last-child)){margin-block-end:0}:where(.space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-x-0>:not(:first-child)){border-inline-start:0}:where(.divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-y-0>:not(:first-child)){border-block-start:0}.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{text-wrap:wrap}.text-nowrap{text-wrap:nowrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:var(--bs-primary-fg);color:var(--bs-fg)}.fg-accent{--bs-fg:var(--bs-accent-fg);color:var(--bs-fg)}.fg-success{--bs-fg:var(--bs-success-fg);color:var(--bs-fg)}.fg-danger{--bs-fg:var(--bs-danger-fg);color:var(--bs-fg)}.fg-warning{--bs-fg:var(--bs-warning-fg);color:var(--bs-fg)}.fg-info{--bs-fg:var(--bs-info-fg);color:var(--bs-fg)}.fg-inverse{--bs-fg:var(--bs-inverse-fg);color:var(--bs-fg)}.fg-secondary{--bs-fg:var(--bs-secondary-fg);color:var(--bs-fg)}.fg-body{--bs-fg:var(--bs-fg-body);color:var(--bs-fg)}.fg-1{--bs-fg:var(--bs-fg-1);color:var(--bs-fg)}.fg-2{--bs-fg:var(--bs-fg-2);color:var(--bs-fg)}.fg-3{--bs-fg:var(--bs-fg-3);color:var(--bs-fg)}.fg-4{--bs-fg:var(--bs-fg-4);color:var(--bs-fg)}.fg-bg{--bs-fg:var(--bs-fg-bg);color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-fg-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-fg-black);color:var(--bs-fg)}.fg-reset{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:var(--bs-primary-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:var(--bs-accent-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:var(--bs-success-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:var(--bs-danger-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:var(--bs-warning-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:var(--bs-info-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:var(--bs-inverse-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:var(--bs-secondary-fg-emphasis);color:var(--bs-fg)}.fg-contrast-primary{--bs-fg:var(--bs-primary-contrast);color:var(--bs-fg)}.fg-contrast-accent{--bs-fg:var(--bs-accent-contrast);color:var(--bs-fg)}.fg-contrast-success{--bs-fg:var(--bs-success-contrast);color:var(--bs-fg)}.fg-contrast-danger{--bs-fg:var(--bs-danger-contrast);color:var(--bs-fg)}.fg-contrast-warning{--bs-fg:var(--bs-warning-contrast);color:var(--bs-fg)}.fg-contrast-info{--bs-fg:var(--bs-info-contrast);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:var(--bs-inverse-contrast);color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:var(--bs-secondary-contrast);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,.hover\:link-10:hover{color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.link-20,.hover\:link-20:hover{color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.link-30,.hover\:link-30:hover{color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.link-40,.hover\:link-40:hover{color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.link-50,.hover\:link-50:hover{color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.link-60,.hover\:link-60:hover{color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.link-70,.hover\:link-70:hover{color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.link-80,.hover\:link-80:hover{color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.link-90,.hover\:link-90:hover{color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.link-100,.hover\:link-100:hover{color:var(--bs-link-color)}.underline-offset-1,.hover\:underline-offset-1:hover{text-underline-offset:.125em}.underline-offset-2,.hover\:underline-offset-2:hover{text-underline-offset:.25em}.underline-offset-3,.hover\:underline-offset-3:hover{text-underline-offset:.375em}.underline-primary{-webkit-text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400));text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{-webkit-text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)))}.underline-success{-webkit-text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400));text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{-webkit-text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400));text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{-webkit-text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{-webkit-text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{-webkit-text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200));text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{-webkit-text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400));text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.hover\:underline-10:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.underline-20,.hover\:underline-20:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.underline-30,.hover\:underline-30:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.underline-40,.hover\:underline-40:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.underline-50,.hover\:underline-50:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.underline-60,.hover\:underline-60:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.underline-70,.hover\:underline-70:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.underline-80,.hover\:underline-80:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.underline-90,.hover\:underline-90:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.underline-100,.hover\:underline-100:hover{-webkit-text-decoration-color:var(--bs-link-color);text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.hover\:underline-thickness-1:hover{text-decoration-thickness:1px}.underline-thickness-2,.hover\:underline-thickness-2:hover{text-decoration-thickness:2px}.underline-thickness-3,.hover\:underline-thickness-3:hover{text-decoration-thickness:3px}.underline-thickness-4,.hover\:underline-thickness-4:hover{text-decoration-thickness:4px}.underline-thickness-5,.hover\:underline-thickness-5:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-primary-bg);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-accent-bg);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-success-bg);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-danger-bg);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-warning-bg);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-info-bg);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:var(--bs-inverse-bg);background-color:var(--bs-bg)}.bg-secondary{--bs-bg:var(--bs-secondary-bg);background-color:var(--bs-bg)}.bg-body{--bs-bg:var(--bs-bg-body);background-color:var(--bs-bg)}.bg-1{--bs-bg:var(--bs-bg-1);background-color:var(--bs-bg)}.bg-2{--bs-bg:var(--bs-bg-2);background-color:var(--bs-bg)}.bg-3{--bs-bg:var(--bs-bg-3);background-color:var(--bs-bg)}.bg-4{--bs-bg:var(--bs-bg-4);background-color:var(--bs-bg)}.bg-fg{--bs-bg:var(--bs-bg-fg);background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-bg-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-bg-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:var(--bs-bg-transparent);background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:var(--bs-primary-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:var(--bs-accent-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:var(--bs-success-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:var(--bs-danger-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:var(--bs-warning-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:var(--bs-info-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:var(--bs-inverse-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:var(--bs-secondary-bg-subtle);background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:var(--bs-primary-bg-muted);background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:var(--bs-accent-bg-muted);background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:var(--bs-success-bg-muted);background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:var(--bs-danger-bg-muted);background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:var(--bs-warning-bg-muted);background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:var(--bs-info-bg-muted);background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:var(--bs-inverse-bg-muted);background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:var(--bs-secondary-bg-muted);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-fg)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-fg-emphasis)}.theme-border{border:var(--bs-border-width) solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{-webkit-user-select:all;user-select:all}.user-select-auto{-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}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded-0{--bs-rounded-size:0;border-radius:var(--bs-rounded-size)}.rounded-1{--bs-rounded-size:.125rem;border-radius:var(--bs-rounded-size)}.rounded-2{--bs-rounded-size:.1875rem;border-radius:var(--bs-rounded-size)}.rounded-3{--bs-rounded-size:.25rem;border-radius:var(--bs-rounded-size)}.rounded-4{--bs-rounded-size:.375rem;border-radius:var(--bs-rounded-size)}.rounded-5{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-6{--bs-rounded-size:.625rem;border-radius:var(--bs-rounded-size)}.rounded-7{--bs-rounded-size:.75rem;border-radius:var(--bs-rounded-size)}.rounded-8{--bs-rounded-size:1rem;border-radius:var(--bs-rounded-size)}.rounded-9{--bs-rounded-size:1.5rem;border-radius:var(--bs-rounded-size)}.rounded{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-circle{--bs-rounded-size:50%;border-radius:var(--bs-rounded-size)}.rounded-pill{--bs-rounded-size:var(--bs-radius-pill);border-radius:var(--bs-rounded-size)}.rounded-size-0{--bs-rounded-size:0}.rounded-size-1{--bs-rounded-size:.125rem}.rounded-size-2{--bs-rounded-size:.1875rem}.rounded-size-3{--bs-rounded-size:.25rem}.rounded-size-4{--bs-rounded-size:.375rem}.rounded-size-5{--bs-rounded-size:.5rem}.rounded-size-6{--bs-rounded-size:.625rem}.rounded-size-7{--bs-rounded-size:.75rem}.rounded-size-8{--bs-rounded-size:1rem}.rounded-size-9{--bs-rounded-size:1.5rem}.rounded-size{--bs-rounded-size:.5rem}.rounded-size-circle{--bs-rounded-size:50%}.rounded-size-pill{--bs-rounded-size:var(--bs-radius-pill)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:.125rem;border-start-end-radius:.125rem}.rounded-top-2{border-start-start-radius:.1875rem;border-start-end-radius:.1875rem}.rounded-top-3{border-start-start-radius:.25rem;border-start-end-radius:.25rem}.rounded-top-4{border-start-start-radius:.375rem;border-start-end-radius:.375rem}.rounded-top-5{border-start-start-radius:.5rem;border-start-end-radius:.5rem}.rounded-top-6{border-start-start-radius:.625rem;border-start-end-radius:.625rem}.rounded-top-7{border-start-start-radius:.75rem;border-start-end-radius:.75rem}.rounded-top-8{border-start-start-radius:1rem;border-start-end-radius:1rem}.rounded-top-9{border-start-start-radius:1.5rem;border-start-end-radius:1.5rem}.rounded-top{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-radius-pill);border-start-end-radius:var(--bs-radius-pill)}.rounded-end-0{border-start-end-radius:0;border-end-end-radius:0}.rounded-end-1{border-start-end-radius:.125rem;border-end-end-radius:.125rem}.rounded-end-2{border-start-end-radius:.1875rem;border-end-end-radius:.1875rem}.rounded-end-3{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-end-4{border-start-end-radius:.375rem;border-end-end-radius:.375rem}.rounded-end-5{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-end-6{border-start-end-radius:.625rem;border-end-end-radius:.625rem}.rounded-end-7{border-start-end-radius:.75rem;border-end-end-radius:.75rem}.rounded-end-8{border-start-end-radius:1rem;border-end-end-radius:1rem}.rounded-end-9{border-start-end-radius:1.5rem;border-end-end-radius:1.5rem}.rounded-end{border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-end-circle{border-start-end-radius:50%;border-end-end-radius:50%}.rounded-end-pill{border-start-end-radius:var(--bs-radius-pill);border-end-end-radius:var(--bs-radius-pill)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:.125rem;border-end-start-radius:.125rem}.rounded-bottom-2{border-end-end-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-bottom-3{border-end-end-radius:.25rem;border-end-start-radius:.25rem}.rounded-bottom-4{border-end-end-radius:.375rem;border-end-start-radius:.375rem}.rounded-bottom-5{border-end-end-radius:.5rem;border-end-start-radius:.5rem}.rounded-bottom-6{border-end-end-radius:.625rem;border-end-start-radius:.625rem}.rounded-bottom-7{border-end-end-radius:.75rem;border-end-start-radius:.75rem}.rounded-bottom-8{border-end-end-radius:1rem;border-end-start-radius:1rem}.rounded-bottom-9{border-end-end-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-bottom{border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-radius-pill)}.rounded-start-0{border-start-start-radius:0;border-end-start-radius:0}.rounded-start-1{border-start-start-radius:.125rem;border-end-start-radius:.125rem}.rounded-start-2{border-start-start-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-start-3{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-start-4{border-start-start-radius:.375rem;border-end-start-radius:.375rem}.rounded-start-5{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.rounded-start-6{border-start-start-radius:.625rem;border-end-start-radius:.625rem}.rounded-start-7{border-start-start-radius:.75rem;border-end-start-radius:.75rem}.rounded-start-8{border-start-start-radius:1rem;border-end-start-radius:1rem}.rounded-start-9{border-start-start-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-start{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-start-circle{border-start-start-radius:50%;border-end-start-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-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){.sm\:float-start{float:inline-start}.sm\:float-end{float:inline-end}.sm\:float-none{float:none}.sm\:object-fit-contain{object-fit:contain}.sm\:object-fit-cover{object-fit:cover}.sm\:object-fit-fill{object-fit:fill}.sm\:object-fit-scale{object-fit:scale-down}.sm\:object-fit-none{object-fit:none}.sm\:d-inline{display:inline}.sm\:d-inline-block{display:inline-block}.sm\:d-block{display:block}.sm\:d-grid{display:grid}.sm\:d-inline-grid{display:inline-grid}.sm\:d-table{display:table}.sm\:d-table-row{display:table-row}.sm\:d-table-cell{display:table-cell}.sm\:d-flex{display:flex}.sm\:d-inline-flex{display:inline-flex}.sm\:d-contents{display:contents}.sm\:d-flow-root{display:flow-root}.sm\:d-none{display:none}.sm\:flex-fill{flex:auto}.sm\:flex-row{flex-direction:row}.sm\:flex-column{flex-direction:column}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-column-reverse{flex-direction:column-reverse}.sm\:flex-grow-0{flex-grow:0}.sm\:flex-grow-1{flex-grow:1}.sm\:flex-shrink-0{flex-shrink:0}.sm\:flex-shrink-1{flex-shrink:1}.sm\:flex-wrap{flex-wrap:wrap}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:flex-wrap-reverse{flex-wrap:wrap-reverse}.sm\:justify-content-start{justify-content:flex-start}.sm\:justify-content-end{justify-content:flex-end}.sm\:justify-content-center{justify-content:center}.sm\:justify-content-between{justify-content:space-between}.sm\:justify-content-around{justify-content:space-around}.sm\:justify-content-evenly{justify-content:space-evenly}.sm\:justify-items-start{justify-items:start}.sm\:justify-items-end{justify-items:end}.sm\:justify-items-center{justify-items:center}.sm\:justify-items-stretch{justify-items:stretch}.sm\:justify-self-start{justify-self:start}.sm\:justify-self-end{justify-self:end}.sm\:justify-self-center{justify-self:center}.sm\:align-items-start{align-items:flex-start}.sm\:align-items-end{align-items:flex-end}.sm\:align-items-center{align-items:center}.sm\:align-items-baseline{align-items:baseline}.sm\:align-items-stretch{align-items:stretch}.sm\:align-content-start{align-content:flex-start}.sm\:align-content-end{align-content:flex-end}.sm\:align-content-center{align-content:center}.sm\:align-content-between{align-content:space-between}.sm\:align-content-around{align-content:space-around}.sm\:align-content-stretch{align-content:stretch}.sm\:align-self-auto{align-self:auto}.sm\:align-self-start{align-self:flex-start}.sm\:align-self-end{align-self:flex-end}.sm\:align-self-center{align-self:center}.sm\:align-self-baseline{align-self:baseline}.sm\:align-self-stretch{align-self:stretch}.sm\:place-items-start{place-items:start}.sm\:place-items-end{place-items:end}.sm\:place-items-center{place-items:center}.sm\:place-items-stretch{place-items:stretch stretch}.sm\:grid-cols-1{grid-template-columns:1fr}.sm\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.sm\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.sm\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.sm\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.sm\:grid-cols-fill{grid-column:1/-1}.sm\:grid-auto-flow-row{grid-auto-flow:row}.sm\:grid-auto-flow-column{grid-auto-flow:column}.sm\:grid-auto-flow-dense{grid-auto-flow:dense}.sm\:order-first{order:-1}.sm\:order-0{order:0}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:order-3{order:3}.sm\:order-4{order:4}.sm\:order-5{order:5}.sm\:order-last{order:6}.sm\:m-0{margin:0}.sm\:m-1{margin:.25rem}.sm\:m-2{margin:.5rem}.sm\:m-3{margin:.75rem}.sm\:m-4{margin:1rem}.sm\:m-5{margin:1.25rem}.sm\:m-6{margin:1.5rem}.sm\:m-7{margin:2rem}.sm\:m-8{margin:2.5rem}.sm\:m-9{margin:3rem}.sm\:m-auto{margin:auto}.sm\:mx-0{margin-inline:0}.sm\:mx-1{margin-inline:.25rem}.sm\:mx-2{margin-inline:.5rem}.sm\:mx-3{margin-inline:.75rem}.sm\:mx-4{margin-inline:1rem}.sm\:mx-5{margin-inline:1.25rem}.sm\:mx-6{margin-inline:1.5rem}.sm\:mx-7{margin-inline:2rem}.sm\:mx-8{margin-inline:2.5rem}.sm\:mx-9{margin-inline:3rem}.sm\:mx-auto{margin-inline:auto}.sm\:my-0{margin-block:0}.sm\:my-1{margin-block:.25rem}.sm\:my-2{margin-block:.5rem}.sm\:my-3{margin-block:.75rem}.sm\:my-4{margin-block:1rem}.sm\:my-5{margin-block:1.25rem}.sm\:my-6{margin-block:1.5rem}.sm\:my-7{margin-block:2rem}.sm\:my-8{margin-block:2.5rem}.sm\:my-9{margin-block:3rem}.sm\:my-auto{margin-block:auto}.sm\:mt-0{margin-block-start:0}.sm\:mt-1{margin-block-start:.25rem}.sm\:mt-2{margin-block-start:.5rem}.sm\:mt-3{margin-block-start:.75rem}.sm\:mt-4{margin-block-start:1rem}.sm\:mt-5{margin-block-start:1.25rem}.sm\:mt-6{margin-block-start:1.5rem}.sm\:mt-7{margin-block-start:2rem}.sm\:mt-8{margin-block-start:2.5rem}.sm\:mt-9{margin-block-start:3rem}.sm\:mt-auto{margin-block-start:auto}.sm\:me-0{margin-inline-end:0}.sm\:me-1{margin-inline-end:.25rem}.sm\:me-2{margin-inline-end:.5rem}.sm\:me-3{margin-inline-end:.75rem}.sm\:me-4{margin-inline-end:1rem}.sm\:me-5{margin-inline-end:1.25rem}.sm\:me-6{margin-inline-end:1.5rem}.sm\:me-7{margin-inline-end:2rem}.sm\:me-8{margin-inline-end:2.5rem}.sm\:me-9{margin-inline-end:3rem}.sm\:me--1{margin-inline-end:-.25rem}.sm\:me--2{margin-inline-end:-.5rem}.sm\:me-auto{margin-inline-end:auto}.sm\:mb-0{margin-block-end:0}.sm\:mb-1{margin-block-end:.25rem}.sm\:mb-2{margin-block-end:.5rem}.sm\:mb-3{margin-block-end:.75rem}.sm\:mb-4{margin-block-end:1rem}.sm\:mb-5{margin-block-end:1.25rem}.sm\:mb-6{margin-block-end:1.5rem}.sm\:mb-7{margin-block-end:2rem}.sm\:mb-8{margin-block-end:2.5rem}.sm\:mb-9{margin-block-end:3rem}.sm\:mb-auto{margin-block-end:auto}.sm\:ms-0{margin-inline-start:0}.sm\:ms-1{margin-inline-start:.25rem}.sm\:ms-2{margin-inline-start:.5rem}.sm\:ms-3{margin-inline-start:.75rem}.sm\:ms-4{margin-inline-start:1rem}.sm\:ms-5{margin-inline-start:1.25rem}.sm\:ms-6{margin-inline-start:1.5rem}.sm\:ms-7{margin-inline-start:2rem}.sm\:ms-8{margin-inline-start:2.5rem}.sm\:ms-9{margin-inline-start:3rem}.sm\:ms--1{margin-inline-start:-.25rem}.sm\:ms--2{margin-inline-start:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-7{padding:2rem}.sm\:p-8{padding:2.5rem}.sm\:p-9{padding:3rem}.sm\:px-0{padding-inline:0}.sm\:px-1{padding-inline:.25rem}.sm\:px-2{padding-inline:.5rem}.sm\:px-3{padding-inline:.75rem}.sm\:px-4{padding-inline:1rem}.sm\:px-5{padding-inline:1.25rem}.sm\:px-6{padding-inline:1.5rem}.sm\:px-7{padding-inline:2rem}.sm\:px-8{padding-inline:2.5rem}.sm\:px-9{padding-inline:3rem}.sm\:py-0{padding-block:0}.sm\:py-1{padding-block:.25rem}.sm\:py-2{padding-block:.5rem}.sm\:py-3{padding-block:.75rem}.sm\:py-4{padding-block:1rem}.sm\:py-5{padding-block:1.25rem}.sm\:py-6{padding-block:1.5rem}.sm\:py-7{padding-block:2rem}.sm\:py-8{padding-block:2.5rem}.sm\:py-9{padding-block:3rem}.sm\:pt-0{padding-block-start:0}.sm\:pt-1{padding-block-start:.25rem}.sm\:pt-2{padding-block-start:.5rem}.sm\:pt-3{padding-block-start:.75rem}.sm\:pt-4{padding-block-start:1rem}.sm\:pt-5{padding-block-start:1.25rem}.sm\:pt-6{padding-block-start:1.5rem}.sm\:pt-7{padding-block-start:2rem}.sm\:pt-8{padding-block-start:2.5rem}.sm\:pt-9{padding-block-start:3rem}.sm\:pe-0{padding-inline-end:0}.sm\:pe-1{padding-inline-end:.25rem}.sm\:pe-2{padding-inline-end:.5rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-4{padding-inline-end:1rem}.sm\:pe-5{padding-inline-end:1.25rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:pe-7{padding-inline-end:2rem}.sm\:pe-8{padding-inline-end:2.5rem}.sm\:pe-9{padding-inline-end:3rem}.sm\:pb-0{padding-block-end:0}.sm\:pb-1{padding-block-end:.25rem}.sm\:pb-2{padding-block-end:.5rem}.sm\:pb-3{padding-block-end:.75rem}.sm\:pb-4{padding-block-end:1rem}.sm\:pb-5{padding-block-end:1.25rem}.sm\:pb-6{padding-block-end:1.5rem}.sm\:pb-7{padding-block-end:2rem}.sm\:pb-8{padding-block-end:2.5rem}.sm\:pb-9{padding-block-end:3rem}.sm\:ps-0{padding-inline-start:0}.sm\:ps-1{padding-inline-start:.25rem}.sm\:ps-2{padding-inline-start:.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-4{padding-inline-start:1rem}.sm\:ps-5{padding-inline-start:1.25rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:ps-7{padding-inline-start:2rem}.sm\:ps-8{padding-inline-start:2.5rem}.sm\:ps-9{padding-inline-start:3rem}.sm\:gap-0{gap:0}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-5{gap:1.25rem}.sm\:gap-6{gap:1.5rem}.sm\:gap-7{gap:2rem}.sm\:gap-8{gap:2.5rem}.sm\:gap-9{gap:3rem}.sm\:row-gap-0{row-gap:0}.sm\:row-gap-1{row-gap:.25rem}.sm\:row-gap-2{row-gap:.5rem}.sm\:row-gap-3{row-gap:.75rem}.sm\:row-gap-4{row-gap:1rem}.sm\:row-gap-5{row-gap:1.25rem}.sm\:row-gap-6{row-gap:1.5rem}.sm\:row-gap-7{row-gap:2rem}.sm\:row-gap-8{row-gap:2.5rem}.sm\:row-gap-9{row-gap:3rem}.sm\:column-gap-0{column-gap:0}.sm\:column-gap-1{column-gap:.25rem}.sm\:column-gap-2{column-gap:.5rem}.sm\:column-gap-3{column-gap:.75rem}.sm\:column-gap-4{column-gap:1rem}.sm\:column-gap-5{column-gap:1.25rem}.sm\:column-gap-6{column-gap:1.5rem}.sm\:column-gap-7{column-gap:2rem}.sm\:column-gap-8{column-gap:2.5rem}.sm\:column-gap-9{column-gap:3rem}:where(.sm\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.sm\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.sm\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.sm\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.sm\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.sm\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.sm\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.sm\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.sm\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.sm\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.sm\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.sm\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.sm\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.sm\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.sm\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.sm\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.sm\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.sm\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.sm\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.sm\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.sm\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.sm\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-y-0>:not(:first-child)){border-block-start:0}.sm\:text-start{text-align:start}.sm\:text-end{text-align:end}.sm\:text-center{text-align:center}}@media (width>=768px){.md\:float-start{float:inline-start}.md\:float-end{float:inline-end}.md\:float-none{float:none}.md\:object-fit-contain{object-fit:contain}.md\:object-fit-cover{object-fit:cover}.md\:object-fit-fill{object-fit:fill}.md\:object-fit-scale{object-fit:scale-down}.md\:object-fit-none{object-fit:none}.md\:d-inline{display:inline}.md\:d-inline-block{display:inline-block}.md\:d-block{display:block}.md\:d-grid{display:grid}.md\:d-inline-grid{display:inline-grid}.md\:d-table{display:table}.md\:d-table-row{display:table-row}.md\:d-table-cell{display:table-cell}.md\:d-flex{display:flex}.md\:d-inline-flex{display:inline-flex}.md\:d-contents{display:contents}.md\:d-flow-root{display:flow-root}.md\:d-none{display:none}.md\:flex-fill{flex:auto}.md\:flex-row{flex-direction:row}.md\:flex-column{flex-direction:column}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:flex-column-reverse{flex-direction:column-reverse}.md\:flex-grow-0{flex-grow:0}.md\:flex-grow-1{flex-grow:1}.md\:flex-shrink-0{flex-shrink:0}.md\:flex-shrink-1{flex-shrink:1}.md\:flex-wrap{flex-wrap:wrap}.md\:flex-nowrap{flex-wrap:nowrap}.md\:flex-wrap-reverse{flex-wrap:wrap-reverse}.md\:justify-content-start{justify-content:flex-start}.md\:justify-content-end{justify-content:flex-end}.md\:justify-content-center{justify-content:center}.md\:justify-content-between{justify-content:space-between}.md\:justify-content-around{justify-content:space-around}.md\:justify-content-evenly{justify-content:space-evenly}.md\:justify-items-start{justify-items:start}.md\:justify-items-end{justify-items:end}.md\:justify-items-center{justify-items:center}.md\:justify-items-stretch{justify-items:stretch}.md\:justify-self-start{justify-self:start}.md\:justify-self-end{justify-self:end}.md\:justify-self-center{justify-self:center}.md\:align-items-start{align-items:flex-start}.md\:align-items-end{align-items:flex-end}.md\:align-items-center{align-items:center}.md\:align-items-baseline{align-items:baseline}.md\:align-items-stretch{align-items:stretch}.md\:align-content-start{align-content:flex-start}.md\:align-content-end{align-content:flex-end}.md\:align-content-center{align-content:center}.md\:align-content-between{align-content:space-between}.md\:align-content-around{align-content:space-around}.md\:align-content-stretch{align-content:stretch}.md\:align-self-auto{align-self:auto}.md\:align-self-start{align-self:flex-start}.md\:align-self-end{align-self:flex-end}.md\:align-self-center{align-self:center}.md\:align-self-baseline{align-self:baseline}.md\:align-self-stretch{align-self:stretch}.md\:place-items-start{place-items:start}.md\:place-items-end{place-items:end}.md\:place-items-center{place-items:center}.md\:place-items-stretch{place-items:stretch stretch}.md\:grid-cols-1{grid-template-columns:1fr}.md\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.md\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.md\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.md\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.md\:grid-cols-fill{grid-column:1/-1}.md\:grid-auto-flow-row{grid-auto-flow:row}.md\:grid-auto-flow-column{grid-auto-flow:column}.md\:grid-auto-flow-dense{grid-auto-flow:dense}.md\:order-first{order:-1}.md\:order-0{order:0}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:order-4{order:4}.md\:order-5{order:5}.md\:order-last{order:6}.md\:m-0{margin:0}.md\:m-1{margin:.25rem}.md\:m-2{margin:.5rem}.md\:m-3{margin:.75rem}.md\:m-4{margin:1rem}.md\:m-5{margin:1.25rem}.md\:m-6{margin:1.5rem}.md\:m-7{margin:2rem}.md\:m-8{margin:2.5rem}.md\:m-9{margin:3rem}.md\:m-auto{margin:auto}.md\:mx-0{margin-inline:0}.md\:mx-1{margin-inline:.25rem}.md\:mx-2{margin-inline:.5rem}.md\:mx-3{margin-inline:.75rem}.md\:mx-4{margin-inline:1rem}.md\:mx-5{margin-inline:1.25rem}.md\:mx-6{margin-inline:1.5rem}.md\:mx-7{margin-inline:2rem}.md\:mx-8{margin-inline:2.5rem}.md\:mx-9{margin-inline:3rem}.md\:mx-auto{margin-inline:auto}.md\:my-0{margin-block:0}.md\:my-1{margin-block:.25rem}.md\:my-2{margin-block:.5rem}.md\:my-3{margin-block:.75rem}.md\:my-4{margin-block:1rem}.md\:my-5{margin-block:1.25rem}.md\:my-6{margin-block:1.5rem}.md\:my-7{margin-block:2rem}.md\:my-8{margin-block:2.5rem}.md\:my-9{margin-block:3rem}.md\:my-auto{margin-block:auto}.md\:mt-0{margin-block-start:0}.md\:mt-1{margin-block-start:.25rem}.md\:mt-2{margin-block-start:.5rem}.md\:mt-3{margin-block-start:.75rem}.md\:mt-4{margin-block-start:1rem}.md\:mt-5{margin-block-start:1.25rem}.md\:mt-6{margin-block-start:1.5rem}.md\:mt-7{margin-block-start:2rem}.md\:mt-8{margin-block-start:2.5rem}.md\:mt-9{margin-block-start:3rem}.md\:mt-auto{margin-block-start:auto}.md\:me-0{margin-inline-end:0}.md\:me-1{margin-inline-end:.25rem}.md\:me-2{margin-inline-end:.5rem}.md\:me-3{margin-inline-end:.75rem}.md\:me-4{margin-inline-end:1rem}.md\:me-5{margin-inline-end:1.25rem}.md\:me-6{margin-inline-end:1.5rem}.md\:me-7{margin-inline-end:2rem}.md\:me-8{margin-inline-end:2.5rem}.md\:me-9{margin-inline-end:3rem}.md\:me--1{margin-inline-end:-.25rem}.md\:me--2{margin-inline-end:-.5rem}.md\:me-auto{margin-inline-end:auto}.md\:mb-0{margin-block-end:0}.md\:mb-1{margin-block-end:.25rem}.md\:mb-2{margin-block-end:.5rem}.md\:mb-3{margin-block-end:.75rem}.md\:mb-4{margin-block-end:1rem}.md\:mb-5{margin-block-end:1.25rem}.md\:mb-6{margin-block-end:1.5rem}.md\:mb-7{margin-block-end:2rem}.md\:mb-8{margin-block-end:2.5rem}.md\:mb-9{margin-block-end:3rem}.md\:mb-auto{margin-block-end:auto}.md\:ms-0{margin-inline-start:0}.md\:ms-1{margin-inline-start:.25rem}.md\:ms-2{margin-inline-start:.5rem}.md\:ms-3{margin-inline-start:.75rem}.md\:ms-4{margin-inline-start:1rem}.md\:ms-5{margin-inline-start:1.25rem}.md\:ms-6{margin-inline-start:1.5rem}.md\:ms-7{margin-inline-start:2rem}.md\:ms-8{margin-inline-start:2.5rem}.md\:ms-9{margin-inline-start:3rem}.md\:ms--1{margin-inline-start:-.25rem}.md\:ms--2{margin-inline-start:-.5rem}.md\:ms-auto{margin-inline-start:auto}.md\:p-0{padding:0}.md\:p-1{padding:.25rem}.md\:p-2{padding:.5rem}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:p-7{padding:2rem}.md\:p-8{padding:2.5rem}.md\:p-9{padding:3rem}.md\:px-0{padding-inline:0}.md\:px-1{padding-inline:.25rem}.md\:px-2{padding-inline:.5rem}.md\:px-3{padding-inline:.75rem}.md\:px-4{padding-inline:1rem}.md\:px-5{padding-inline:1.25rem}.md\:px-6{padding-inline:1.5rem}.md\:px-7{padding-inline:2rem}.md\:px-8{padding-inline:2.5rem}.md\:px-9{padding-inline:3rem}.md\:py-0{padding-block:0}.md\:py-1{padding-block:.25rem}.md\:py-2{padding-block:.5rem}.md\:py-3{padding-block:.75rem}.md\:py-4{padding-block:1rem}.md\:py-5{padding-block:1.25rem}.md\:py-6{padding-block:1.5rem}.md\:py-7{padding-block:2rem}.md\:py-8{padding-block:2.5rem}.md\:py-9{padding-block:3rem}.md\:pt-0{padding-block-start:0}.md\:pt-1{padding-block-start:.25rem}.md\:pt-2{padding-block-start:.5rem}.md\:pt-3{padding-block-start:.75rem}.md\:pt-4{padding-block-start:1rem}.md\:pt-5{padding-block-start:1.25rem}.md\:pt-6{padding-block-start:1.5rem}.md\:pt-7{padding-block-start:2rem}.md\:pt-8{padding-block-start:2.5rem}.md\:pt-9{padding-block-start:3rem}.md\:pe-0{padding-inline-end:0}.md\:pe-1{padding-inline-end:.25rem}.md\:pe-2{padding-inline-end:.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-4{padding-inline-end:1rem}.md\:pe-5{padding-inline-end:1.25rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:pe-7{padding-inline-end:2rem}.md\:pe-8{padding-inline-end:2.5rem}.md\:pe-9{padding-inline-end:3rem}.md\:pb-0{padding-block-end:0}.md\:pb-1{padding-block-end:.25rem}.md\:pb-2{padding-block-end:.5rem}.md\:pb-3{padding-block-end:.75rem}.md\:pb-4{padding-block-end:1rem}.md\:pb-5{padding-block-end:1.25rem}.md\:pb-6{padding-block-end:1.5rem}.md\:pb-7{padding-block-end:2rem}.md\:pb-8{padding-block-end:2.5rem}.md\:pb-9{padding-block-end:3rem}.md\:ps-0{padding-inline-start:0}.md\:ps-1{padding-inline-start:.25rem}.md\:ps-2{padding-inline-start:.5rem}.md\:ps-3{padding-inline-start:.75rem}.md\:ps-4{padding-inline-start:1rem}.md\:ps-5{padding-inline-start:1.25rem}.md\:ps-6{padding-inline-start:1.5rem}.md\:ps-7{padding-inline-start:2rem}.md\:ps-8{padding-inline-start:2.5rem}.md\:ps-9{padding-inline-start:3rem}.md\:gap-0{gap:0}.md\:gap-1{gap:.25rem}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-5{gap:1.25rem}.md\:gap-6{gap:1.5rem}.md\:gap-7{gap:2rem}.md\:gap-8{gap:2.5rem}.md\:gap-9{gap:3rem}.md\:row-gap-0{row-gap:0}.md\:row-gap-1{row-gap:.25rem}.md\:row-gap-2{row-gap:.5rem}.md\:row-gap-3{row-gap:.75rem}.md\:row-gap-4{row-gap:1rem}.md\:row-gap-5{row-gap:1.25rem}.md\:row-gap-6{row-gap:1.5rem}.md\:row-gap-7{row-gap:2rem}.md\:row-gap-8{row-gap:2.5rem}.md\:row-gap-9{row-gap:3rem}.md\:column-gap-0{column-gap:0}.md\:column-gap-1{column-gap:.25rem}.md\:column-gap-2{column-gap:.5rem}.md\:column-gap-3{column-gap:.75rem}.md\:column-gap-4{column-gap:1rem}.md\:column-gap-5{column-gap:1.25rem}.md\:column-gap-6{column-gap:1.5rem}.md\:column-gap-7{column-gap:2rem}.md\:column-gap-8{column-gap:2.5rem}.md\:column-gap-9{column-gap:3rem}:where(.md\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.md\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.md\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.md\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.md\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.md\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.md\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.md\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.md\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.md\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.md\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.md\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.md\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.md\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.md\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.md\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.md\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.md\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.md\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.md\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.md\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.md\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-y-0>:not(:first-child)){border-block-start:0}.md\:text-start{text-align:start}.md\:text-end{text-align:end}.md\:text-center{text-align:center}}@media (width>=1024px){.lg\:float-start{float:inline-start}.lg\:float-end{float:inline-end}.lg\:float-none{float:none}.lg\:object-fit-contain{object-fit:contain}.lg\:object-fit-cover{object-fit:cover}.lg\:object-fit-fill{object-fit:fill}.lg\:object-fit-scale{object-fit:scale-down}.lg\:object-fit-none{object-fit:none}.lg\:d-inline{display:inline}.lg\:d-inline-block{display:inline-block}.lg\:d-block{display:block}.lg\:d-grid{display:grid}.lg\:d-inline-grid{display:inline-grid}.lg\:d-table{display:table}.lg\:d-table-row{display:table-row}.lg\:d-table-cell{display:table-cell}.lg\:d-flex{display:flex}.lg\:d-inline-flex{display:inline-flex}.lg\:d-contents{display:contents}.lg\:d-flow-root{display:flow-root}.lg\:d-none{display:none}.lg\:flex-fill{flex:auto}.lg\:flex-row{flex-direction:row}.lg\:flex-column{flex-direction:column}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:flex-column-reverse{flex-direction:column-reverse}.lg\:flex-grow-0{flex-grow:0}.lg\:flex-grow-1{flex-grow:1}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-shrink-1{flex-shrink:1}.lg\:flex-wrap{flex-wrap:wrap}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:flex-wrap-reverse{flex-wrap:wrap-reverse}.lg\:justify-content-start{justify-content:flex-start}.lg\:justify-content-end{justify-content:flex-end}.lg\:justify-content-center{justify-content:center}.lg\:justify-content-between{justify-content:space-between}.lg\:justify-content-around{justify-content:space-around}.lg\:justify-content-evenly{justify-content:space-evenly}.lg\:justify-items-start{justify-items:start}.lg\:justify-items-end{justify-items:end}.lg\:justify-items-center{justify-items:center}.lg\:justify-items-stretch{justify-items:stretch}.lg\:justify-self-start{justify-self:start}.lg\:justify-self-end{justify-self:end}.lg\:justify-self-center{justify-self:center}.lg\:align-items-start{align-items:flex-start}.lg\:align-items-end{align-items:flex-end}.lg\:align-items-center{align-items:center}.lg\:align-items-baseline{align-items:baseline}.lg\:align-items-stretch{align-items:stretch}.lg\:align-content-start{align-content:flex-start}.lg\:align-content-end{align-content:flex-end}.lg\:align-content-center{align-content:center}.lg\:align-content-between{align-content:space-between}.lg\:align-content-around{align-content:space-around}.lg\:align-content-stretch{align-content:stretch}.lg\:align-self-auto{align-self:auto}.lg\:align-self-start{align-self:flex-start}.lg\:align-self-end{align-self:flex-end}.lg\:align-self-center{align-self:center}.lg\:align-self-baseline{align-self:baseline}.lg\:align-self-stretch{align-self:stretch}.lg\:place-items-start{place-items:start}.lg\:place-items-end{place-items:end}.lg\:place-items-center{place-items:center}.lg\:place-items-stretch{place-items:stretch stretch}.lg\:grid-cols-1{grid-template-columns:1fr}.lg\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.lg\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.lg\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.lg\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.lg\:grid-cols-fill{grid-column:1/-1}.lg\:grid-auto-flow-row{grid-auto-flow:row}.lg\:grid-auto-flow-column{grid-auto-flow:column}.lg\:grid-auto-flow-dense{grid-auto-flow:dense}.lg\:order-first{order:-1}.lg\:order-0{order:0}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-3{order:3}.lg\:order-4{order:4}.lg\:order-5{order:5}.lg\:order-last{order:6}.lg\:m-0{margin:0}.lg\:m-1{margin:.25rem}.lg\:m-2{margin:.5rem}.lg\:m-3{margin:.75rem}.lg\:m-4{margin:1rem}.lg\:m-5{margin:1.25rem}.lg\:m-6{margin:1.5rem}.lg\:m-7{margin:2rem}.lg\:m-8{margin:2.5rem}.lg\:m-9{margin:3rem}.lg\:m-auto{margin:auto}.lg\:mx-0{margin-inline:0}.lg\:mx-1{margin-inline:.25rem}.lg\:mx-2{margin-inline:.5rem}.lg\:mx-3{margin-inline:.75rem}.lg\:mx-4{margin-inline:1rem}.lg\:mx-5{margin-inline:1.25rem}.lg\:mx-6{margin-inline:1.5rem}.lg\:mx-7{margin-inline:2rem}.lg\:mx-8{margin-inline:2.5rem}.lg\:mx-9{margin-inline:3rem}.lg\:mx-auto{margin-inline:auto}.lg\:my-0{margin-block:0}.lg\:my-1{margin-block:.25rem}.lg\:my-2{margin-block:.5rem}.lg\:my-3{margin-block:.75rem}.lg\:my-4{margin-block:1rem}.lg\:my-5{margin-block:1.25rem}.lg\:my-6{margin-block:1.5rem}.lg\:my-7{margin-block:2rem}.lg\:my-8{margin-block:2.5rem}.lg\:my-9{margin-block:3rem}.lg\:my-auto{margin-block:auto}.lg\:mt-0{margin-block-start:0}.lg\:mt-1{margin-block-start:.25rem}.lg\:mt-2{margin-block-start:.5rem}.lg\:mt-3{margin-block-start:.75rem}.lg\:mt-4{margin-block-start:1rem}.lg\:mt-5{margin-block-start:1.25rem}.lg\:mt-6{margin-block-start:1.5rem}.lg\:mt-7{margin-block-start:2rem}.lg\:mt-8{margin-block-start:2.5rem}.lg\:mt-9{margin-block-start:3rem}.lg\:mt-auto{margin-block-start:auto}.lg\:me-0{margin-inline-end:0}.lg\:me-1{margin-inline-end:.25rem}.lg\:me-2{margin-inline-end:.5rem}.lg\:me-3{margin-inline-end:.75rem}.lg\:me-4{margin-inline-end:1rem}.lg\:me-5{margin-inline-end:1.25rem}.lg\:me-6{margin-inline-end:1.5rem}.lg\:me-7{margin-inline-end:2rem}.lg\:me-8{margin-inline-end:2.5rem}.lg\:me-9{margin-inline-end:3rem}.lg\:me--1{margin-inline-end:-.25rem}.lg\:me--2{margin-inline-end:-.5rem}.lg\:me-auto{margin-inline-end:auto}.lg\:mb-0{margin-block-end:0}.lg\:mb-1{margin-block-end:.25rem}.lg\:mb-2{margin-block-end:.5rem}.lg\:mb-3{margin-block-end:.75rem}.lg\:mb-4{margin-block-end:1rem}.lg\:mb-5{margin-block-end:1.25rem}.lg\:mb-6{margin-block-end:1.5rem}.lg\:mb-7{margin-block-end:2rem}.lg\:mb-8{margin-block-end:2.5rem}.lg\:mb-9{margin-block-end:3rem}.lg\:mb-auto{margin-block-end:auto}.lg\:ms-0{margin-inline-start:0}.lg\:ms-1{margin-inline-start:.25rem}.lg\:ms-2{margin-inline-start:.5rem}.lg\:ms-3{margin-inline-start:.75rem}.lg\:ms-4{margin-inline-start:1rem}.lg\:ms-5{margin-inline-start:1.25rem}.lg\:ms-6{margin-inline-start:1.5rem}.lg\:ms-7{margin-inline-start:2rem}.lg\:ms-8{margin-inline-start:2.5rem}.lg\:ms-9{margin-inline-start:3rem}.lg\:ms--1{margin-inline-start:-.25rem}.lg\:ms--2{margin-inline-start:-.5rem}.lg\:ms-auto{margin-inline-start:auto}.lg\:p-0{padding:0}.lg\:p-1{padding:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-3{padding:.75rem}.lg\:p-4{padding:1rem}.lg\:p-5{padding:1.25rem}.lg\:p-6{padding:1.5rem}.lg\:p-7{padding:2rem}.lg\:p-8{padding:2.5rem}.lg\:p-9{padding:3rem}.lg\:px-0{padding-inline:0}.lg\:px-1{padding-inline:.25rem}.lg\:px-2{padding-inline:.5rem}.lg\:px-3{padding-inline:.75rem}.lg\:px-4{padding-inline:1rem}.lg\:px-5{padding-inline:1.25rem}.lg\:px-6{padding-inline:1.5rem}.lg\:px-7{padding-inline:2rem}.lg\:px-8{padding-inline:2.5rem}.lg\:px-9{padding-inline:3rem}.lg\:py-0{padding-block:0}.lg\:py-1{padding-block:.25rem}.lg\:py-2{padding-block:.5rem}.lg\:py-3{padding-block:.75rem}.lg\:py-4{padding-block:1rem}.lg\:py-5{padding-block:1.25rem}.lg\:py-6{padding-block:1.5rem}.lg\:py-7{padding-block:2rem}.lg\:py-8{padding-block:2.5rem}.lg\:py-9{padding-block:3rem}.lg\:pt-0{padding-block-start:0}.lg\:pt-1{padding-block-start:.25rem}.lg\:pt-2{padding-block-start:.5rem}.lg\:pt-3{padding-block-start:.75rem}.lg\:pt-4{padding-block-start:1rem}.lg\:pt-5{padding-block-start:1.25rem}.lg\:pt-6{padding-block-start:1.5rem}.lg\:pt-7{padding-block-start:2rem}.lg\:pt-8{padding-block-start:2.5rem}.lg\:pt-9{padding-block-start:3rem}.lg\:pe-0{padding-inline-end:0}.lg\:pe-1{padding-inline-end:.25rem}.lg\:pe-2{padding-inline-end:.5rem}.lg\:pe-3{padding-inline-end:.75rem}.lg\:pe-4{padding-inline-end:1rem}.lg\:pe-5{padding-inline-end:1.25rem}.lg\:pe-6{padding-inline-end:1.5rem}.lg\:pe-7{padding-inline-end:2rem}.lg\:pe-8{padding-inline-end:2.5rem}.lg\:pe-9{padding-inline-end:3rem}.lg\:pb-0{padding-block-end:0}.lg\:pb-1{padding-block-end:.25rem}.lg\:pb-2{padding-block-end:.5rem}.lg\:pb-3{padding-block-end:.75rem}.lg\:pb-4{padding-block-end:1rem}.lg\:pb-5{padding-block-end:1.25rem}.lg\:pb-6{padding-block-end:1.5rem}.lg\:pb-7{padding-block-end:2rem}.lg\:pb-8{padding-block-end:2.5rem}.lg\:pb-9{padding-block-end:3rem}.lg\:ps-0{padding-inline-start:0}.lg\:ps-1{padding-inline-start:.25rem}.lg\:ps-2{padding-inline-start:.5rem}.lg\:ps-3{padding-inline-start:.75rem}.lg\:ps-4{padding-inline-start:1rem}.lg\:ps-5{padding-inline-start:1.25rem}.lg\:ps-6{padding-inline-start:1.5rem}.lg\:ps-7{padding-inline-start:2rem}.lg\:ps-8{padding-inline-start:2.5rem}.lg\:ps-9{padding-inline-start:3rem}.lg\:gap-0{gap:0}.lg\:gap-1{gap:.25rem}.lg\:gap-2{gap:.5rem}.lg\:gap-3{gap:.75rem}.lg\:gap-4{gap:1rem}.lg\:gap-5{gap:1.25rem}.lg\:gap-6{gap:1.5rem}.lg\:gap-7{gap:2rem}.lg\:gap-8{gap:2.5rem}.lg\:gap-9{gap:3rem}.lg\:row-gap-0{row-gap:0}.lg\:row-gap-1{row-gap:.25rem}.lg\:row-gap-2{row-gap:.5rem}.lg\:row-gap-3{row-gap:.75rem}.lg\:row-gap-4{row-gap:1rem}.lg\:row-gap-5{row-gap:1.25rem}.lg\:row-gap-6{row-gap:1.5rem}.lg\:row-gap-7{row-gap:2rem}.lg\:row-gap-8{row-gap:2.5rem}.lg\:row-gap-9{row-gap:3rem}.lg\:column-gap-0{column-gap:0}.lg\:column-gap-1{column-gap:.25rem}.lg\:column-gap-2{column-gap:.5rem}.lg\:column-gap-3{column-gap:.75rem}.lg\:column-gap-4{column-gap:1rem}.lg\:column-gap-5{column-gap:1.25rem}.lg\:column-gap-6{column-gap:1.5rem}.lg\:column-gap-7{column-gap:2rem}.lg\:column-gap-8{column-gap:2.5rem}.lg\:column-gap-9{column-gap:3rem}:where(.lg\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.lg\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.lg\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.lg\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.lg\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.lg\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.lg\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.lg\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.lg\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.lg\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.lg\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.lg\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.lg\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.lg\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.lg\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.lg\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.lg\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.lg\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.lg\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.lg\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.lg\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.lg\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-y-0>:not(:first-child)){border-block-start:0}.lg\:text-start{text-align:start}.lg\:text-end{text-align:end}.lg\:text-center{text-align:center}}@media (width>=1280px){.xl\:float-start{float:inline-start}.xl\:float-end{float:inline-end}.xl\:float-none{float:none}.xl\:object-fit-contain{object-fit:contain}.xl\:object-fit-cover{object-fit:cover}.xl\:object-fit-fill{object-fit:fill}.xl\:object-fit-scale{object-fit:scale-down}.xl\:object-fit-none{object-fit:none}.xl\:d-inline{display:inline}.xl\:d-inline-block{display:inline-block}.xl\:d-block{display:block}.xl\:d-grid{display:grid}.xl\:d-inline-grid{display:inline-grid}.xl\:d-table{display:table}.xl\:d-table-row{display:table-row}.xl\:d-table-cell{display:table-cell}.xl\:d-flex{display:flex}.xl\:d-inline-flex{display:inline-flex}.xl\:d-contents{display:contents}.xl\:d-flow-root{display:flow-root}.xl\:d-none{display:none}.xl\:flex-fill{flex:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-column{flex-direction:column}.xl\:flex-row-reverse{flex-direction:row-reverse}.xl\:flex-column-reverse{flex-direction:column-reverse}.xl\:flex-grow-0{flex-grow:0}.xl\:flex-grow-1{flex-grow:1}.xl\:flex-shrink-0{flex-shrink:0}.xl\:flex-shrink-1{flex-shrink:1}.xl\:flex-wrap{flex-wrap:wrap}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.xl\:justify-content-start{justify-content:flex-start}.xl\:justify-content-end{justify-content:flex-end}.xl\:justify-content-center{justify-content:center}.xl\:justify-content-between{justify-content:space-between}.xl\:justify-content-around{justify-content:space-around}.xl\:justify-content-evenly{justify-content:space-evenly}.xl\:justify-items-start{justify-items:start}.xl\:justify-items-end{justify-items:end}.xl\:justify-items-center{justify-items:center}.xl\:justify-items-stretch{justify-items:stretch}.xl\:justify-self-start{justify-self:start}.xl\:justify-self-end{justify-self:end}.xl\:justify-self-center{justify-self:center}.xl\:align-items-start{align-items:flex-start}.xl\:align-items-end{align-items:flex-end}.xl\:align-items-center{align-items:center}.xl\:align-items-baseline{align-items:baseline}.xl\:align-items-stretch{align-items:stretch}.xl\:align-content-start{align-content:flex-start}.xl\:align-content-end{align-content:flex-end}.xl\:align-content-center{align-content:center}.xl\:align-content-between{align-content:space-between}.xl\:align-content-around{align-content:space-around}.xl\:align-content-stretch{align-content:stretch}.xl\:align-self-auto{align-self:auto}.xl\:align-self-start{align-self:flex-start}.xl\:align-self-end{align-self:flex-end}.xl\:align-self-center{align-self:center}.xl\:align-self-baseline{align-self:baseline}.xl\:align-self-stretch{align-self:stretch}.xl\:place-items-start{place-items:start}.xl\:place-items-end{place-items:end}.xl\:place-items-center{place-items:center}.xl\:place-items-stretch{place-items:stretch stretch}.xl\:grid-cols-1{grid-template-columns:1fr}.xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.xl\:grid-cols-fill{grid-column:1/-1}.xl\:grid-auto-flow-row{grid-auto-flow:row}.xl\:grid-auto-flow-column{grid-auto-flow:column}.xl\:grid-auto-flow-dense{grid-auto-flow:dense}.xl\:order-first{order:-1}.xl\:order-0{order:0}.xl\:order-1{order:1}.xl\:order-2{order:2}.xl\:order-3{order:3}.xl\:order-4{order:4}.xl\:order-5{order:5}.xl\:order-last{order:6}.xl\:m-0{margin:0}.xl\:m-1{margin:.25rem}.xl\:m-2{margin:.5rem}.xl\:m-3{margin:.75rem}.xl\:m-4{margin:1rem}.xl\:m-5{margin:1.25rem}.xl\:m-6{margin:1.5rem}.xl\:m-7{margin:2rem}.xl\:m-8{margin:2.5rem}.xl\:m-9{margin:3rem}.xl\:m-auto{margin:auto}.xl\:mx-0{margin-inline:0}.xl\:mx-1{margin-inline:.25rem}.xl\:mx-2{margin-inline:.5rem}.xl\:mx-3{margin-inline:.75rem}.xl\:mx-4{margin-inline:1rem}.xl\:mx-5{margin-inline:1.25rem}.xl\:mx-6{margin-inline:1.5rem}.xl\:mx-7{margin-inline:2rem}.xl\:mx-8{margin-inline:2.5rem}.xl\:mx-9{margin-inline:3rem}.xl\:mx-auto{margin-inline:auto}.xl\:my-0{margin-block:0}.xl\:my-1{margin-block:.25rem}.xl\:my-2{margin-block:.5rem}.xl\:my-3{margin-block:.75rem}.xl\:my-4{margin-block:1rem}.xl\:my-5{margin-block:1.25rem}.xl\:my-6{margin-block:1.5rem}.xl\:my-7{margin-block:2rem}.xl\:my-8{margin-block:2.5rem}.xl\:my-9{margin-block:3rem}.xl\:my-auto{margin-block:auto}.xl\:mt-0{margin-block-start:0}.xl\:mt-1{margin-block-start:.25rem}.xl\:mt-2{margin-block-start:.5rem}.xl\:mt-3{margin-block-start:.75rem}.xl\:mt-4{margin-block-start:1rem}.xl\:mt-5{margin-block-start:1.25rem}.xl\:mt-6{margin-block-start:1.5rem}.xl\:mt-7{margin-block-start:2rem}.xl\:mt-8{margin-block-start:2.5rem}.xl\:mt-9{margin-block-start:3rem}.xl\:mt-auto{margin-block-start:auto}.xl\:me-0{margin-inline-end:0}.xl\:me-1{margin-inline-end:.25rem}.xl\:me-2{margin-inline-end:.5rem}.xl\:me-3{margin-inline-end:.75rem}.xl\:me-4{margin-inline-end:1rem}.xl\:me-5{margin-inline-end:1.25rem}.xl\:me-6{margin-inline-end:1.5rem}.xl\:me-7{margin-inline-end:2rem}.xl\:me-8{margin-inline-end:2.5rem}.xl\:me-9{margin-inline-end:3rem}.xl\:me--1{margin-inline-end:-.25rem}.xl\:me--2{margin-inline-end:-.5rem}.xl\:me-auto{margin-inline-end:auto}.xl\:mb-0{margin-block-end:0}.xl\:mb-1{margin-block-end:.25rem}.xl\:mb-2{margin-block-end:.5rem}.xl\:mb-3{margin-block-end:.75rem}.xl\:mb-4{margin-block-end:1rem}.xl\:mb-5{margin-block-end:1.25rem}.xl\:mb-6{margin-block-end:1.5rem}.xl\:mb-7{margin-block-end:2rem}.xl\:mb-8{margin-block-end:2.5rem}.xl\:mb-9{margin-block-end:3rem}.xl\:mb-auto{margin-block-end:auto}.xl\:ms-0{margin-inline-start:0}.xl\:ms-1{margin-inline-start:.25rem}.xl\:ms-2{margin-inline-start:.5rem}.xl\:ms-3{margin-inline-start:.75rem}.xl\:ms-4{margin-inline-start:1rem}.xl\:ms-5{margin-inline-start:1.25rem}.xl\:ms-6{margin-inline-start:1.5rem}.xl\:ms-7{margin-inline-start:2rem}.xl\:ms-8{margin-inline-start:2.5rem}.xl\:ms-9{margin-inline-start:3rem}.xl\:ms--1{margin-inline-start:-.25rem}.xl\:ms--2{margin-inline-start:-.5rem}.xl\:ms-auto{margin-inline-start:auto}.xl\:p-0{padding:0}.xl\:p-1{padding:.25rem}.xl\:p-2{padding:.5rem}.xl\:p-3{padding:.75rem}.xl\:p-4{padding:1rem}.xl\:p-5{padding:1.25rem}.xl\:p-6{padding:1.5rem}.xl\:p-7{padding:2rem}.xl\:p-8{padding:2.5rem}.xl\:p-9{padding:3rem}.xl\:px-0{padding-inline:0}.xl\:px-1{padding-inline:.25rem}.xl\:px-2{padding-inline:.5rem}.xl\:px-3{padding-inline:.75rem}.xl\:px-4{padding-inline:1rem}.xl\:px-5{padding-inline:1.25rem}.xl\:px-6{padding-inline:1.5rem}.xl\:px-7{padding-inline:2rem}.xl\:px-8{padding-inline:2.5rem}.xl\:px-9{padding-inline:3rem}.xl\:py-0{padding-block:0}.xl\:py-1{padding-block:.25rem}.xl\:py-2{padding-block:.5rem}.xl\:py-3{padding-block:.75rem}.xl\:py-4{padding-block:1rem}.xl\:py-5{padding-block:1.25rem}.xl\:py-6{padding-block:1.5rem}.xl\:py-7{padding-block:2rem}.xl\:py-8{padding-block:2.5rem}.xl\:py-9{padding-block:3rem}.xl\:pt-0{padding-block-start:0}.xl\:pt-1{padding-block-start:.25rem}.xl\:pt-2{padding-block-start:.5rem}.xl\:pt-3{padding-block-start:.75rem}.xl\:pt-4{padding-block-start:1rem}.xl\:pt-5{padding-block-start:1.25rem}.xl\:pt-6{padding-block-start:1.5rem}.xl\:pt-7{padding-block-start:2rem}.xl\:pt-8{padding-block-start:2.5rem}.xl\:pt-9{padding-block-start:3rem}.xl\:pe-0{padding-inline-end:0}.xl\:pe-1{padding-inline-end:.25rem}.xl\:pe-2{padding-inline-end:.5rem}.xl\:pe-3{padding-inline-end:.75rem}.xl\:pe-4{padding-inline-end:1rem}.xl\:pe-5{padding-inline-end:1.25rem}.xl\:pe-6{padding-inline-end:1.5rem}.xl\:pe-7{padding-inline-end:2rem}.xl\:pe-8{padding-inline-end:2.5rem}.xl\:pe-9{padding-inline-end:3rem}.xl\:pb-0{padding-block-end:0}.xl\:pb-1{padding-block-end:.25rem}.xl\:pb-2{padding-block-end:.5rem}.xl\:pb-3{padding-block-end:.75rem}.xl\:pb-4{padding-block-end:1rem}.xl\:pb-5{padding-block-end:1.25rem}.xl\:pb-6{padding-block-end:1.5rem}.xl\:pb-7{padding-block-end:2rem}.xl\:pb-8{padding-block-end:2.5rem}.xl\:pb-9{padding-block-end:3rem}.xl\:ps-0{padding-inline-start:0}.xl\:ps-1{padding-inline-start:.25rem}.xl\:ps-2{padding-inline-start:.5rem}.xl\:ps-3{padding-inline-start:.75rem}.xl\:ps-4{padding-inline-start:1rem}.xl\:ps-5{padding-inline-start:1.25rem}.xl\:ps-6{padding-inline-start:1.5rem}.xl\:ps-7{padding-inline-start:2rem}.xl\:ps-8{padding-inline-start:2.5rem}.xl\:ps-9{padding-inline-start:3rem}.xl\:gap-0{gap:0}.xl\:gap-1{gap:.25rem}.xl\:gap-2{gap:.5rem}.xl\:gap-3{gap:.75rem}.xl\:gap-4{gap:1rem}.xl\:gap-5{gap:1.25rem}.xl\:gap-6{gap:1.5rem}.xl\:gap-7{gap:2rem}.xl\:gap-8{gap:2.5rem}.xl\:gap-9{gap:3rem}.xl\:row-gap-0{row-gap:0}.xl\:row-gap-1{row-gap:.25rem}.xl\:row-gap-2{row-gap:.5rem}.xl\:row-gap-3{row-gap:.75rem}.xl\:row-gap-4{row-gap:1rem}.xl\:row-gap-5{row-gap:1.25rem}.xl\:row-gap-6{row-gap:1.5rem}.xl\:row-gap-7{row-gap:2rem}.xl\:row-gap-8{row-gap:2.5rem}.xl\:row-gap-9{row-gap:3rem}.xl\:column-gap-0{column-gap:0}.xl\:column-gap-1{column-gap:.25rem}.xl\:column-gap-2{column-gap:.5rem}.xl\:column-gap-3{column-gap:.75rem}.xl\:column-gap-4{column-gap:1rem}.xl\:column-gap-5{column-gap:1.25rem}.xl\:column-gap-6{column-gap:1.5rem}.xl\:column-gap-7{column-gap:2rem}.xl\:column-gap-8{column-gap:2.5rem}.xl\:column-gap-9{column-gap:3rem}:where(.xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-y-0>:not(:first-child)){border-block-start:0}.xl\:text-start{text-align:start}.xl\:text-end{text-align:end}.xl\:text-center{text-align:center}}@media (width>=1536px){.\32 xl\:float-start{float:inline-start}.\32 xl\:float-end{float:inline-end}.\32 xl\:float-none{float:none}.\32 xl\:object-fit-contain{object-fit:contain}.\32 xl\:object-fit-cover{object-fit:cover}.\32 xl\:object-fit-fill{object-fit:fill}.\32 xl\:object-fit-scale{object-fit:scale-down}.\32 xl\:object-fit-none{object-fit:none}.\32 xl\:d-inline{display:inline}.\32 xl\:d-inline-block{display:inline-block}.\32 xl\:d-block{display:block}.\32 xl\:d-grid{display:grid}.\32 xl\:d-inline-grid{display:inline-grid}.\32 xl\:d-table{display:table}.\32 xl\:d-table-row{display:table-row}.\32 xl\:d-table-cell{display:table-cell}.\32 xl\:d-flex{display:flex}.\32 xl\:d-inline-flex{display:inline-flex}.\32 xl\:d-contents{display:contents}.\32 xl\:d-flow-root{display:flow-root}.\32 xl\:d-none{display:none}.\32 xl\:flex-fill{flex:auto}.\32 xl\:flex-row{flex-direction:row}.\32 xl\:flex-column{flex-direction:column}.\32 xl\:flex-row-reverse{flex-direction:row-reverse}.\32 xl\:flex-column-reverse{flex-direction:column-reverse}.\32 xl\:flex-grow-0{flex-grow:0}.\32 xl\:flex-grow-1{flex-grow:1}.\32 xl\:flex-shrink-0{flex-shrink:0}.\32 xl\:flex-shrink-1{flex-shrink:1}.\32 xl\:flex-wrap{flex-wrap:wrap}.\32 xl\:flex-nowrap{flex-wrap:nowrap}.\32 xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.\32 xl\:justify-content-start{justify-content:flex-start}.\32 xl\:justify-content-end{justify-content:flex-end}.\32 xl\:justify-content-center{justify-content:center}.\32 xl\:justify-content-between{justify-content:space-between}.\32 xl\:justify-content-around{justify-content:space-around}.\32 xl\:justify-content-evenly{justify-content:space-evenly}.\32 xl\:justify-items-start{justify-items:start}.\32 xl\:justify-items-end{justify-items:end}.\32 xl\:justify-items-center{justify-items:center}.\32 xl\:justify-items-stretch{justify-items:stretch}.\32 xl\:justify-self-start{justify-self:start}.\32 xl\:justify-self-end{justify-self:end}.\32 xl\:justify-self-center{justify-self:center}.\32 xl\:align-items-start{align-items:flex-start}.\32 xl\:align-items-end{align-items:flex-end}.\32 xl\:align-items-center{align-items:center}.\32 xl\:align-items-baseline{align-items:baseline}.\32 xl\:align-items-stretch{align-items:stretch}.\32 xl\:align-content-start{align-content:flex-start}.\32 xl\:align-content-end{align-content:flex-end}.\32 xl\:align-content-center{align-content:center}.\32 xl\:align-content-between{align-content:space-between}.\32 xl\:align-content-around{align-content:space-around}.\32 xl\:align-content-stretch{align-content:stretch}.\32 xl\:align-self-auto{align-self:auto}.\32 xl\:align-self-start{align-self:flex-start}.\32 xl\:align-self-end{align-self:flex-end}.\32 xl\:align-self-center{align-self:center}.\32 xl\:align-self-baseline{align-self:baseline}.\32 xl\:align-self-stretch{align-self:stretch}.\32 xl\:place-items-start{place-items:start}.\32 xl\:place-items-end{place-items:end}.\32 xl\:place-items-center{place-items:center}.\32 xl\:place-items-stretch{place-items:stretch stretch}.\32 xl\:grid-cols-1{grid-template-columns:1fr}.\32 xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.\32 xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.\32 xl\:grid-cols-fill{grid-column:1/-1}.\32 xl\:grid-auto-flow-row{grid-auto-flow:row}.\32 xl\:grid-auto-flow-column{grid-auto-flow:column}.\32 xl\:grid-auto-flow-dense{grid-auto-flow:dense}.\32 xl\:order-first{order:-1}.\32 xl\:order-0{order:0}.\32 xl\:order-1{order:1}.\32 xl\:order-2{order:2}.\32 xl\:order-3{order:3}.\32 xl\:order-4{order:4}.\32 xl\:order-5{order:5}.\32 xl\:order-last{order:6}.\32 xl\:m-0{margin:0}.\32 xl\:m-1{margin:.25rem}.\32 xl\:m-2{margin:.5rem}.\32 xl\:m-3{margin:.75rem}.\32 xl\:m-4{margin:1rem}.\32 xl\:m-5{margin:1.25rem}.\32 xl\:m-6{margin:1.5rem}.\32 xl\:m-7{margin:2rem}.\32 xl\:m-8{margin:2.5rem}.\32 xl\:m-9{margin:3rem}.\32 xl\:m-auto{margin:auto}.\32 xl\:mx-0{margin-inline:0}.\32 xl\:mx-1{margin-inline:.25rem}.\32 xl\:mx-2{margin-inline:.5rem}.\32 xl\:mx-3{margin-inline:.75rem}.\32 xl\:mx-4{margin-inline:1rem}.\32 xl\:mx-5{margin-inline:1.25rem}.\32 xl\:mx-6{margin-inline:1.5rem}.\32 xl\:mx-7{margin-inline:2rem}.\32 xl\:mx-8{margin-inline:2.5rem}.\32 xl\:mx-9{margin-inline:3rem}.\32 xl\:mx-auto{margin-inline:auto}.\32 xl\:my-0{margin-block:0}.\32 xl\:my-1{margin-block:.25rem}.\32 xl\:my-2{margin-block:.5rem}.\32 xl\:my-3{margin-block:.75rem}.\32 xl\:my-4{margin-block:1rem}.\32 xl\:my-5{margin-block:1.25rem}.\32 xl\:my-6{margin-block:1.5rem}.\32 xl\:my-7{margin-block:2rem}.\32 xl\:my-8{margin-block:2.5rem}.\32 xl\:my-9{margin-block:3rem}.\32 xl\:my-auto{margin-block:auto}.\32 xl\:mt-0{margin-block-start:0}.\32 xl\:mt-1{margin-block-start:.25rem}.\32 xl\:mt-2{margin-block-start:.5rem}.\32 xl\:mt-3{margin-block-start:.75rem}.\32 xl\:mt-4{margin-block-start:1rem}.\32 xl\:mt-5{margin-block-start:1.25rem}.\32 xl\:mt-6{margin-block-start:1.5rem}.\32 xl\:mt-7{margin-block-start:2rem}.\32 xl\:mt-8{margin-block-start:2.5rem}.\32 xl\:mt-9{margin-block-start:3rem}.\32 xl\:mt-auto{margin-block-start:auto}.\32 xl\:me-0{margin-inline-end:0}.\32 xl\:me-1{margin-inline-end:.25rem}.\32 xl\:me-2{margin-inline-end:.5rem}.\32 xl\:me-3{margin-inline-end:.75rem}.\32 xl\:me-4{margin-inline-end:1rem}.\32 xl\:me-5{margin-inline-end:1.25rem}.\32 xl\:me-6{margin-inline-end:1.5rem}.\32 xl\:me-7{margin-inline-end:2rem}.\32 xl\:me-8{margin-inline-end:2.5rem}.\32 xl\:me-9{margin-inline-end:3rem}.\32 xl\:me--1{margin-inline-end:-.25rem}.\32 xl\:me--2{margin-inline-end:-.5rem}.\32 xl\:me-auto{margin-inline-end:auto}.\32 xl\:mb-0{margin-block-end:0}.\32 xl\:mb-1{margin-block-end:.25rem}.\32 xl\:mb-2{margin-block-end:.5rem}.\32 xl\:mb-3{margin-block-end:.75rem}.\32 xl\:mb-4{margin-block-end:1rem}.\32 xl\:mb-5{margin-block-end:1.25rem}.\32 xl\:mb-6{margin-block-end:1.5rem}.\32 xl\:mb-7{margin-block-end:2rem}.\32 xl\:mb-8{margin-block-end:2.5rem}.\32 xl\:mb-9{margin-block-end:3rem}.\32 xl\:mb-auto{margin-block-end:auto}.\32 xl\:ms-0{margin-inline-start:0}.\32 xl\:ms-1{margin-inline-start:.25rem}.\32 xl\:ms-2{margin-inline-start:.5rem}.\32 xl\:ms-3{margin-inline-start:.75rem}.\32 xl\:ms-4{margin-inline-start:1rem}.\32 xl\:ms-5{margin-inline-start:1.25rem}.\32 xl\:ms-6{margin-inline-start:1.5rem}.\32 xl\:ms-7{margin-inline-start:2rem}.\32 xl\:ms-8{margin-inline-start:2.5rem}.\32 xl\:ms-9{margin-inline-start:3rem}.\32 xl\:ms--1{margin-inline-start:-.25rem}.\32 xl\:ms--2{margin-inline-start:-.5rem}.\32 xl\:ms-auto{margin-inline-start:auto}.\32 xl\:p-0{padding:0}.\32 xl\:p-1{padding:.25rem}.\32 xl\:p-2{padding:.5rem}.\32 xl\:p-3{padding:.75rem}.\32 xl\:p-4{padding:1rem}.\32 xl\:p-5{padding:1.25rem}.\32 xl\:p-6{padding:1.5rem}.\32 xl\:p-7{padding:2rem}.\32 xl\:p-8{padding:2.5rem}.\32 xl\:p-9{padding:3rem}.\32 xl\:px-0{padding-inline:0}.\32 xl\:px-1{padding-inline:.25rem}.\32 xl\:px-2{padding-inline:.5rem}.\32 xl\:px-3{padding-inline:.75rem}.\32 xl\:px-4{padding-inline:1rem}.\32 xl\:px-5{padding-inline:1.25rem}.\32 xl\:px-6{padding-inline:1.5rem}.\32 xl\:px-7{padding-inline:2rem}.\32 xl\:px-8{padding-inline:2.5rem}.\32 xl\:px-9{padding-inline:3rem}.\32 xl\:py-0{padding-block:0}.\32 xl\:py-1{padding-block:.25rem}.\32 xl\:py-2{padding-block:.5rem}.\32 xl\:py-3{padding-block:.75rem}.\32 xl\:py-4{padding-block:1rem}.\32 xl\:py-5{padding-block:1.25rem}.\32 xl\:py-6{padding-block:1.5rem}.\32 xl\:py-7{padding-block:2rem}.\32 xl\:py-8{padding-block:2.5rem}.\32 xl\:py-9{padding-block:3rem}.\32 xl\:pt-0{padding-block-start:0}.\32 xl\:pt-1{padding-block-start:.25rem}.\32 xl\:pt-2{padding-block-start:.5rem}.\32 xl\:pt-3{padding-block-start:.75rem}.\32 xl\:pt-4{padding-block-start:1rem}.\32 xl\:pt-5{padding-block-start:1.25rem}.\32 xl\:pt-6{padding-block-start:1.5rem}.\32 xl\:pt-7{padding-block-start:2rem}.\32 xl\:pt-8{padding-block-start:2.5rem}.\32 xl\:pt-9{padding-block-start:3rem}.\32 xl\:pe-0{padding-inline-end:0}.\32 xl\:pe-1{padding-inline-end:.25rem}.\32 xl\:pe-2{padding-inline-end:.5rem}.\32 xl\:pe-3{padding-inline-end:.75rem}.\32 xl\:pe-4{padding-inline-end:1rem}.\32 xl\:pe-5{padding-inline-end:1.25rem}.\32 xl\:pe-6{padding-inline-end:1.5rem}.\32 xl\:pe-7{padding-inline-end:2rem}.\32 xl\:pe-8{padding-inline-end:2.5rem}.\32 xl\:pe-9{padding-inline-end:3rem}.\32 xl\:pb-0{padding-block-end:0}.\32 xl\:pb-1{padding-block-end:.25rem}.\32 xl\:pb-2{padding-block-end:.5rem}.\32 xl\:pb-3{padding-block-end:.75rem}.\32 xl\:pb-4{padding-block-end:1rem}.\32 xl\:pb-5{padding-block-end:1.25rem}.\32 xl\:pb-6{padding-block-end:1.5rem}.\32 xl\:pb-7{padding-block-end:2rem}.\32 xl\:pb-8{padding-block-end:2.5rem}.\32 xl\:pb-9{padding-block-end:3rem}.\32 xl\:ps-0{padding-inline-start:0}.\32 xl\:ps-1{padding-inline-start:.25rem}.\32 xl\:ps-2{padding-inline-start:.5rem}.\32 xl\:ps-3{padding-inline-start:.75rem}.\32 xl\:ps-4{padding-inline-start:1rem}.\32 xl\:ps-5{padding-inline-start:1.25rem}.\32 xl\:ps-6{padding-inline-start:1.5rem}.\32 xl\:ps-7{padding-inline-start:2rem}.\32 xl\:ps-8{padding-inline-start:2.5rem}.\32 xl\:ps-9{padding-inline-start:3rem}.\32 xl\:gap-0{gap:0}.\32 xl\:gap-1{gap:.25rem}.\32 xl\:gap-2{gap:.5rem}.\32 xl\:gap-3{gap:.75rem}.\32 xl\:gap-4{gap:1rem}.\32 xl\:gap-5{gap:1.25rem}.\32 xl\:gap-6{gap:1.5rem}.\32 xl\:gap-7{gap:2rem}.\32 xl\:gap-8{gap:2.5rem}.\32 xl\:gap-9{gap:3rem}.\32 xl\:row-gap-0{row-gap:0}.\32 xl\:row-gap-1{row-gap:.25rem}.\32 xl\:row-gap-2{row-gap:.5rem}.\32 xl\:row-gap-3{row-gap:.75rem}.\32 xl\:row-gap-4{row-gap:1rem}.\32 xl\:row-gap-5{row-gap:1.25rem}.\32 xl\:row-gap-6{row-gap:1.5rem}.\32 xl\:row-gap-7{row-gap:2rem}.\32 xl\:row-gap-8{row-gap:2.5rem}.\32 xl\:row-gap-9{row-gap:3rem}.\32 xl\:column-gap-0{column-gap:0}.\32 xl\:column-gap-1{column-gap:.25rem}.\32 xl\:column-gap-2{column-gap:.5rem}.\32 xl\:column-gap-3{column-gap:.75rem}.\32 xl\:column-gap-4{column-gap:1rem}.\32 xl\:column-gap-5{column-gap:1.25rem}.\32 xl\:column-gap-6{column-gap:1.5rem}.\32 xl\:column-gap-7{column-gap:2rem}.\32 xl\:column-gap-8{column-gap:2.5rem}.\32 xl\:column-gap-9{column-gap:3rem}:where(.\32 xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.\32 xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.\32 xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.\32 xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.\32 xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.\32 xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.\32 xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.\32 xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.\32 xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.\32 xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.\32 xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.\32 xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.\32 xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.\32 xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.\32 xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.\32 xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.\32 xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.\32 xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.\32 xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.\32 xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.\32 xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.\32 xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-y-0>:not(:first-child)){border-block-start:0}.\32 xl\:text-start{text-align:start}.\32 xl\:text-end{text-align:end}.\32 xl\:text-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-fg));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch, var(--bs-link-color) 90%, #000);--bs-font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Mono", Consolas, "Liberation Mono", 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(var(--bs-gray-200),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch, var(--bs-fg-body) 15%, transparent);--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-radius-5);--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-radius-5);--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-radius-5);--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-radius-7);--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-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-fg-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-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));--bs-accent-fg-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-fg:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-fg-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-fg:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-fg-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-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-fg-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-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-fg-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-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-fg-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-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-fg-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-fg:var(--bs-fg-body);--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-bg:var(--bs-bg-body);--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(color-mix(in oklch, var(--bs-gray-100), var(--bs-gray-200)),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;--bs-spacer-0:0;--bs-spacer-1:.25rem;--bs-spacer-2:.5rem;--bs-spacer-3:.75rem;--bs-spacer-4:1rem;--bs-spacer-5:1.25rem;--bs-spacer-6:1.5rem;--bs-spacer-7:2rem;--bs-spacer-8:2.5rem;--bs-spacer-9:3rem;--bs-radius-0:0;--bs-radius-1:.125rem;--bs-radius-2:.1875rem;--bs-radius-3:.25rem;--bs-radius-4:.375rem;--bs-radius-5:.5rem;--bs-radius-6:.625rem;--bs-radius-7:.75rem;--bs-radius-8:1rem;--bs-radius-9:1.5rem;--bs-radius-pill:50rem;color-scheme:light dark;scrollbar-gutter:stable}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}@keyframes otp-caret-blink{0%,to{opacity:1}50%{opacity:0}}.drawer,.\32 xl\:drawer,.xl\:drawer,.lg\:drawer,.md\:drawer,.sm\:drawer{--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5}.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)}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:transparent;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{margin-top:0;margin-bottom:var(--bs-spacer-2);color:var(--bs-heading-color);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;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration:underline dotted;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-fg,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-fg-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));-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],[class]),a:not([href],[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-radius-5);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}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date],[type=datetime-local],[type=month],[type=week],[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}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-meridiem-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}::-webkit-outer-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,.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container{--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){.sm\:container,.container{max-width:540px}}@media (width>=768px){.md\:container,.sm\:container,.container{max-width:720px}}@media (width>=1024px){.lg\:container,.md\:container,.sm\:container,.container{max-width:960px}}@media (width>=1280px){.xl\:container,.lg\:container,.md\:container,.sm\:container,.container{max-width:1200px}}@media (width>=1536px){.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container,.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:.75rem}.g-3,.gy-3{--bs-gutter-y:.75rem}.g-4,.gx-4{--bs-gutter-x:1rem}.g-4,.gy-4{--bs-gutter-y:1rem}.g-5,.gx-5{--bs-gutter-x:1.25rem}.g-5,.gy-5{--bs-gutter-y:1.25rem}.g-6,.gx-6{--bs-gutter-x:1.5rem}.g-6,.gy-6{--bs-gutter-y:1.5rem}.g-7,.gx-7{--bs-gutter-x:2rem}.g-7,.gy-7{--bs-gutter-y:2rem}.g-8,.gx-8{--bs-gutter-x:2.5rem}.g-8,.gy-8{--bs-gutter-y:2.5rem}.g-9,.gx-9{--bs-gutter-x:3rem}.g-9,.gy-9{--bs-gutter-y:3rem}@media (width>=576px){.sm\:col{flex:1 0 0}.sm\:row-cols-auto>*{flex:none;width:auto}.sm\:row-cols-1>*{flex:none;width:100%}.sm\:row-cols-2>*{flex:none;width:50%}.sm\:row-cols-3>*{flex:none;width:33.3333%}.sm\:row-cols-4>*{flex:none;width:25%}.sm\:row-cols-5>*{flex:none;width:20%}.sm\:row-cols-6>*{flex:none;width:16.6667%}.sm\:col-auto{flex:none;width:auto}.sm\:col-1{flex:none;width:8.33333%}.sm\:col-2{flex:none;width:16.6667%}.sm\:col-3{flex:none;width:25%}.sm\:col-4{flex:none;width:33.3333%}.sm\:col-5{flex:none;width:41.6667%}.sm\:col-6{flex:none;width:50%}.sm\:col-7{flex:none;width:58.3333%}.sm\:col-8{flex:none;width:66.6667%}.sm\:col-9{flex:none;width:75%}.sm\:col-10{flex:none;width:83.3333%}.sm\:col-11{flex:none;width:91.6667%}.sm\:col-12{flex:none;width:100%}.sm\:offset-0{margin-inline-start:0}.sm\:offset-1{margin-inline-start:8.33333%}.sm\:offset-2{margin-inline-start:16.6667%}.sm\:offset-3{margin-inline-start:25%}.sm\:offset-4{margin-inline-start:33.3333%}.sm\:offset-5{margin-inline-start:41.6667%}.sm\:offset-6{margin-inline-start:50%}.sm\:offset-7{margin-inline-start:58.3333%}.sm\:offset-8{margin-inline-start:66.6667%}.sm\:offset-9{margin-inline-start:75%}.sm\:offset-10{margin-inline-start:83.3333%}.sm\:offset-11{margin-inline-start:91.6667%}.sm\:g-0,.sm\:gx-0{--bs-gutter-x:0}.sm\:g-0,.sm\:gy-0{--bs-gutter-y:0}.sm\:g-1,.sm\:gx-1{--bs-gutter-x:.25rem}.sm\:g-1,.sm\:gy-1{--bs-gutter-y:.25rem}.sm\:g-2,.sm\:gx-2{--bs-gutter-x:.5rem}.sm\:g-2,.sm\:gy-2{--bs-gutter-y:.5rem}.sm\:g-3,.sm\:gx-3{--bs-gutter-x:.75rem}.sm\:g-3,.sm\:gy-3{--bs-gutter-y:.75rem}.sm\:g-4,.sm\:gx-4{--bs-gutter-x:1rem}.sm\:g-4,.sm\:gy-4{--bs-gutter-y:1rem}.sm\:g-5,.sm\:gx-5{--bs-gutter-x:1.25rem}.sm\:g-5,.sm\:gy-5{--bs-gutter-y:1.25rem}.sm\:g-6,.sm\:gx-6{--bs-gutter-x:1.5rem}.sm\:g-6,.sm\:gy-6{--bs-gutter-y:1.5rem}.sm\:g-7,.sm\:gx-7{--bs-gutter-x:2rem}.sm\:g-7,.sm\:gy-7{--bs-gutter-y:2rem}.sm\:g-8,.sm\:gx-8{--bs-gutter-x:2.5rem}.sm\:g-8,.sm\:gy-8{--bs-gutter-y:2.5rem}.sm\:g-9,.sm\:gx-9{--bs-gutter-x:3rem}.sm\:g-9,.sm\:gy-9{--bs-gutter-y:3rem}}@media (width>=768px){.md\:col{flex:1 0 0}.md\:row-cols-auto>*{flex:none;width:auto}.md\:row-cols-1>*{flex:none;width:100%}.md\:row-cols-2>*{flex:none;width:50%}.md\:row-cols-3>*{flex:none;width:33.3333%}.md\:row-cols-4>*{flex:none;width:25%}.md\:row-cols-5>*{flex:none;width:20%}.md\:row-cols-6>*{flex:none;width:16.6667%}.md\:col-auto{flex:none;width:auto}.md\:col-1{flex:none;width:8.33333%}.md\:col-2{flex:none;width:16.6667%}.md\:col-3{flex:none;width:25%}.md\:col-4{flex:none;width:33.3333%}.md\:col-5{flex:none;width:41.6667%}.md\:col-6{flex:none;width:50%}.md\:col-7{flex:none;width:58.3333%}.md\:col-8{flex:none;width:66.6667%}.md\:col-9{flex:none;width:75%}.md\:col-10{flex:none;width:83.3333%}.md\:col-11{flex:none;width:91.6667%}.md\:col-12{flex:none;width:100%}.md\:offset-0{margin-inline-start:0}.md\:offset-1{margin-inline-start:8.33333%}.md\:offset-2{margin-inline-start:16.6667%}.md\:offset-3{margin-inline-start:25%}.md\:offset-4{margin-inline-start:33.3333%}.md\:offset-5{margin-inline-start:41.6667%}.md\:offset-6{margin-inline-start:50%}.md\:offset-7{margin-inline-start:58.3333%}.md\:offset-8{margin-inline-start:66.6667%}.md\:offset-9{margin-inline-start:75%}.md\:offset-10{margin-inline-start:83.3333%}.md\:offset-11{margin-inline-start:91.6667%}.md\:g-0,.md\:gx-0{--bs-gutter-x:0}.md\:g-0,.md\:gy-0{--bs-gutter-y:0}.md\:g-1,.md\:gx-1{--bs-gutter-x:.25rem}.md\:g-1,.md\:gy-1{--bs-gutter-y:.25rem}.md\:g-2,.md\:gx-2{--bs-gutter-x:.5rem}.md\:g-2,.md\:gy-2{--bs-gutter-y:.5rem}.md\:g-3,.md\:gx-3{--bs-gutter-x:.75rem}.md\:g-3,.md\:gy-3{--bs-gutter-y:.75rem}.md\:g-4,.md\:gx-4{--bs-gutter-x:1rem}.md\:g-4,.md\:gy-4{--bs-gutter-y:1rem}.md\:g-5,.md\:gx-5{--bs-gutter-x:1.25rem}.md\:g-5,.md\:gy-5{--bs-gutter-y:1.25rem}.md\:g-6,.md\:gx-6{--bs-gutter-x:1.5rem}.md\:g-6,.md\:gy-6{--bs-gutter-y:1.5rem}.md\:g-7,.md\:gx-7{--bs-gutter-x:2rem}.md\:g-7,.md\:gy-7{--bs-gutter-y:2rem}.md\:g-8,.md\:gx-8{--bs-gutter-x:2.5rem}.md\:g-8,.md\:gy-8{--bs-gutter-y:2.5rem}.md\:g-9,.md\:gx-9{--bs-gutter-x:3rem}.md\:g-9,.md\:gy-9{--bs-gutter-y:3rem}}@media (width>=1024px){.lg\:col{flex:1 0 0}.lg\:row-cols-auto>*{flex:none;width:auto}.lg\:row-cols-1>*{flex:none;width:100%}.lg\:row-cols-2>*{flex:none;width:50%}.lg\:row-cols-3>*{flex:none;width:33.3333%}.lg\:row-cols-4>*{flex:none;width:25%}.lg\:row-cols-5>*{flex:none;width:20%}.lg\:row-cols-6>*{flex:none;width:16.6667%}.lg\:col-auto{flex:none;width:auto}.lg\:col-1{flex:none;width:8.33333%}.lg\:col-2{flex:none;width:16.6667%}.lg\:col-3{flex:none;width:25%}.lg\:col-4{flex:none;width:33.3333%}.lg\:col-5{flex:none;width:41.6667%}.lg\:col-6{flex:none;width:50%}.lg\:col-7{flex:none;width:58.3333%}.lg\:col-8{flex:none;width:66.6667%}.lg\:col-9{flex:none;width:75%}.lg\:col-10{flex:none;width:83.3333%}.lg\:col-11{flex:none;width:91.6667%}.lg\:col-12{flex:none;width:100%}.lg\:offset-0{margin-inline-start:0}.lg\:offset-1{margin-inline-start:8.33333%}.lg\:offset-2{margin-inline-start:16.6667%}.lg\:offset-3{margin-inline-start:25%}.lg\:offset-4{margin-inline-start:33.3333%}.lg\:offset-5{margin-inline-start:41.6667%}.lg\:offset-6{margin-inline-start:50%}.lg\:offset-7{margin-inline-start:58.3333%}.lg\:offset-8{margin-inline-start:66.6667%}.lg\:offset-9{margin-inline-start:75%}.lg\:offset-10{margin-inline-start:83.3333%}.lg\:offset-11{margin-inline-start:91.6667%}.lg\:g-0,.lg\:gx-0{--bs-gutter-x:0}.lg\:g-0,.lg\:gy-0{--bs-gutter-y:0}.lg\:g-1,.lg\:gx-1{--bs-gutter-x:.25rem}.lg\:g-1,.lg\:gy-1{--bs-gutter-y:.25rem}.lg\:g-2,.lg\:gx-2{--bs-gutter-x:.5rem}.lg\:g-2,.lg\:gy-2{--bs-gutter-y:.5rem}.lg\:g-3,.lg\:gx-3{--bs-gutter-x:.75rem}.lg\:g-3,.lg\:gy-3{--bs-gutter-y:.75rem}.lg\:g-4,.lg\:gx-4{--bs-gutter-x:1rem}.lg\:g-4,.lg\:gy-4{--bs-gutter-y:1rem}.lg\:g-5,.lg\:gx-5{--bs-gutter-x:1.25rem}.lg\:g-5,.lg\:gy-5{--bs-gutter-y:1.25rem}.lg\:g-6,.lg\:gx-6{--bs-gutter-x:1.5rem}.lg\:g-6,.lg\:gy-6{--bs-gutter-y:1.5rem}.lg\:g-7,.lg\:gx-7{--bs-gutter-x:2rem}.lg\:g-7,.lg\:gy-7{--bs-gutter-y:2rem}.lg\:g-8,.lg\:gx-8{--bs-gutter-x:2.5rem}.lg\:g-8,.lg\:gy-8{--bs-gutter-y:2.5rem}.lg\:g-9,.lg\:gx-9{--bs-gutter-x:3rem}.lg\:g-9,.lg\:gy-9{--bs-gutter-y:3rem}}@media (width>=1280px){.xl\:col{flex:1 0 0}.xl\:row-cols-auto>*{flex:none;width:auto}.xl\:row-cols-1>*{flex:none;width:100%}.xl\:row-cols-2>*{flex:none;width:50%}.xl\:row-cols-3>*{flex:none;width:33.3333%}.xl\:row-cols-4>*{flex:none;width:25%}.xl\:row-cols-5>*{flex:none;width:20%}.xl\:row-cols-6>*{flex:none;width:16.6667%}.xl\:col-auto{flex:none;width:auto}.xl\:col-1{flex:none;width:8.33333%}.xl\:col-2{flex:none;width:16.6667%}.xl\:col-3{flex:none;width:25%}.xl\:col-4{flex:none;width:33.3333%}.xl\:col-5{flex:none;width:41.6667%}.xl\:col-6{flex:none;width:50%}.xl\:col-7{flex:none;width:58.3333%}.xl\:col-8{flex:none;width:66.6667%}.xl\:col-9{flex:none;width:75%}.xl\:col-10{flex:none;width:83.3333%}.xl\:col-11{flex:none;width:91.6667%}.xl\:col-12{flex:none;width:100%}.xl\:offset-0{margin-inline-start:0}.xl\:offset-1{margin-inline-start:8.33333%}.xl\:offset-2{margin-inline-start:16.6667%}.xl\:offset-3{margin-inline-start:25%}.xl\:offset-4{margin-inline-start:33.3333%}.xl\:offset-5{margin-inline-start:41.6667%}.xl\:offset-6{margin-inline-start:50%}.xl\:offset-7{margin-inline-start:58.3333%}.xl\:offset-8{margin-inline-start:66.6667%}.xl\:offset-9{margin-inline-start:75%}.xl\:offset-10{margin-inline-start:83.3333%}.xl\:offset-11{margin-inline-start:91.6667%}.xl\:g-0,.xl\:gx-0{--bs-gutter-x:0}.xl\:g-0,.xl\:gy-0{--bs-gutter-y:0}.xl\:g-1,.xl\:gx-1{--bs-gutter-x:.25rem}.xl\:g-1,.xl\:gy-1{--bs-gutter-y:.25rem}.xl\:g-2,.xl\:gx-2{--bs-gutter-x:.5rem}.xl\:g-2,.xl\:gy-2{--bs-gutter-y:.5rem}.xl\:g-3,.xl\:gx-3{--bs-gutter-x:.75rem}.xl\:g-3,.xl\:gy-3{--bs-gutter-y:.75rem}.xl\:g-4,.xl\:gx-4{--bs-gutter-x:1rem}.xl\:g-4,.xl\:gy-4{--bs-gutter-y:1rem}.xl\:g-5,.xl\:gx-5{--bs-gutter-x:1.25rem}.xl\:g-5,.xl\:gy-5{--bs-gutter-y:1.25rem}.xl\:g-6,.xl\:gx-6{--bs-gutter-x:1.5rem}.xl\:g-6,.xl\:gy-6{--bs-gutter-y:1.5rem}.xl\:g-7,.xl\:gx-7{--bs-gutter-x:2rem}.xl\:g-7,.xl\:gy-7{--bs-gutter-y:2rem}.xl\:g-8,.xl\:gx-8{--bs-gutter-x:2.5rem}.xl\:g-8,.xl\:gy-8{--bs-gutter-y:2.5rem}.xl\:g-9,.xl\:gx-9{--bs-gutter-x:3rem}.xl\:g-9,.xl\:gy-9{--bs-gutter-y:3rem}}@media (width>=1536px){.\32 xl\:col{flex:1 0 0}.\32 xl\:row-cols-auto>*{flex:none;width:auto}.\32 xl\:row-cols-1>*{flex:none;width:100%}.\32 xl\:row-cols-2>*{flex:none;width:50%}.\32 xl\:row-cols-3>*{flex:none;width:33.3333%}.\32 xl\:row-cols-4>*{flex:none;width:25%}.\32 xl\:row-cols-5>*{flex:none;width:20%}.\32 xl\:row-cols-6>*{flex:none;width:16.6667%}.\32 xl\:col-auto{flex:none;width:auto}.\32 xl\:col-1{flex:none;width:8.33333%}.\32 xl\:col-2{flex:none;width:16.6667%}.\32 xl\:col-3{flex:none;width:25%}.\32 xl\:col-4{flex:none;width:33.3333%}.\32 xl\:col-5{flex:none;width:41.6667%}.\32 xl\:col-6{flex:none;width:50%}.\32 xl\:col-7{flex:none;width:58.3333%}.\32 xl\:col-8{flex:none;width:66.6667%}.\32 xl\:col-9{flex:none;width:75%}.\32 xl\:col-10{flex:none;width:83.3333%}.\32 xl\:col-11{flex:none;width:91.6667%}.\32 xl\:col-12{flex:none;width:100%}.\32 xl\:offset-0{margin-inline-start:0}.\32 xl\:offset-1{margin-inline-start:8.33333%}.\32 xl\:offset-2{margin-inline-start:16.6667%}.\32 xl\:offset-3{margin-inline-start:25%}.\32 xl\:offset-4{margin-inline-start:33.3333%}.\32 xl\:offset-5{margin-inline-start:41.6667%}.\32 xl\:offset-6{margin-inline-start:50%}.\32 xl\:offset-7{margin-inline-start:58.3333%}.\32 xl\:offset-8{margin-inline-start:66.6667%}.\32 xl\:offset-9{margin-inline-start:75%}.\32 xl\:offset-10{margin-inline-start:83.3333%}.\32 xl\:offset-11{margin-inline-start:91.6667%}.\32 xl\:g-0,.\32 xl\:gx-0{--bs-gutter-x:0}.\32 xl\:g-0,.\32 xl\:gy-0{--bs-gutter-y:0}.\32 xl\:g-1,.\32 xl\:gx-1{--bs-gutter-x:.25rem}.\32 xl\:g-1,.\32 xl\:gy-1{--bs-gutter-y:.25rem}.\32 xl\:g-2,.\32 xl\:gx-2{--bs-gutter-x:.5rem}.\32 xl\:g-2,.\32 xl\:gy-2{--bs-gutter-y:.5rem}.\32 xl\:g-3,.\32 xl\:gx-3{--bs-gutter-x:.75rem}.\32 xl\:g-3,.\32 xl\:gy-3{--bs-gutter-y:.75rem}.\32 xl\:g-4,.\32 xl\:gx-4{--bs-gutter-x:1rem}.\32 xl\:g-4,.\32 xl\:gy-4{--bs-gutter-y:1rem}.\32 xl\:g-5,.\32 xl\:gx-5{--bs-gutter-x:1.25rem}.\32 xl\:g-5,.\32 xl\:gy-5{--bs-gutter-y:1.25rem}.\32 xl\:g-6,.\32 xl\:gx-6{--bs-gutter-x:1.5rem}.\32 xl\:g-6,.\32 xl\:gy-6{--bs-gutter-y:1.5rem}.\32 xl\:g-7,.\32 xl\:gx-7{--bs-gutter-x:2rem}.\32 xl\:g-7,.\32 xl\:gy-7{--bs-gutter-y:2rem}.\32 xl\:g-8,.\32 xl\:gx-8{--bs-gutter-x:2.5rem}.\32 xl\:g-8,.\32 xl\:gy-8{--bs-gutter-y:2.5rem}.\32 xl\:g-9,.\32 xl\:gx-9{--bs-gutter-x:3rem}.\32 xl\:g-9,.\32 xl\:gy-9{--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){.sm\:g-col-1{grid-column:auto/span 1}.sm\:g-col-2{grid-column:auto/span 2}.sm\:g-col-3{grid-column:auto/span 3}.sm\:g-col-4{grid-column:auto/span 4}.sm\:g-col-5{grid-column:auto/span 5}.sm\:g-col-6{grid-column:auto/span 6}.sm\:g-col-7{grid-column:auto/span 7}.sm\:g-col-8{grid-column:auto/span 8}.sm\:g-col-9{grid-column:auto/span 9}.sm\:g-col-10{grid-column:auto/span 10}.sm\:g-col-11{grid-column:auto/span 11}.sm\:g-col-12{grid-column:auto/span 12}.sm\:g-start-1{grid-column-start:1}.sm\:g-start-2{grid-column-start:2}.sm\:g-start-3{grid-column-start:3}.sm\:g-start-4{grid-column-start:4}.sm\:g-start-5{grid-column-start:5}.sm\:g-start-6{grid-column-start:6}.sm\:g-start-7{grid-column-start:7}.sm\:g-start-8{grid-column-start:8}.sm\:g-start-9{grid-column-start:9}.sm\:g-start-10{grid-column-start:10}.sm\:g-start-11{grid-column-start:11}}@media (width>=768px){.md\:g-col-1{grid-column:auto/span 1}.md\:g-col-2{grid-column:auto/span 2}.md\:g-col-3{grid-column:auto/span 3}.md\:g-col-4{grid-column:auto/span 4}.md\:g-col-5{grid-column:auto/span 5}.md\:g-col-6{grid-column:auto/span 6}.md\:g-col-7{grid-column:auto/span 7}.md\:g-col-8{grid-column:auto/span 8}.md\:g-col-9{grid-column:auto/span 9}.md\:g-col-10{grid-column:auto/span 10}.md\:g-col-11{grid-column:auto/span 11}.md\:g-col-12{grid-column:auto/span 12}.md\:g-start-1{grid-column-start:1}.md\:g-start-2{grid-column-start:2}.md\:g-start-3{grid-column-start:3}.md\:g-start-4{grid-column-start:4}.md\:g-start-5{grid-column-start:5}.md\:g-start-6{grid-column-start:6}.md\:g-start-7{grid-column-start:7}.md\:g-start-8{grid-column-start:8}.md\:g-start-9{grid-column-start:9}.md\:g-start-10{grid-column-start:10}.md\:g-start-11{grid-column-start:11}}@media (width>=1024px){.lg\:g-col-1{grid-column:auto/span 1}.lg\:g-col-2{grid-column:auto/span 2}.lg\:g-col-3{grid-column:auto/span 3}.lg\:g-col-4{grid-column:auto/span 4}.lg\:g-col-5{grid-column:auto/span 5}.lg\:g-col-6{grid-column:auto/span 6}.lg\:g-col-7{grid-column:auto/span 7}.lg\:g-col-8{grid-column:auto/span 8}.lg\:g-col-9{grid-column:auto/span 9}.lg\:g-col-10{grid-column:auto/span 10}.lg\:g-col-11{grid-column:auto/span 11}.lg\:g-col-12{grid-column:auto/span 12}.lg\:g-start-1{grid-column-start:1}.lg\:g-start-2{grid-column-start:2}.lg\:g-start-3{grid-column-start:3}.lg\:g-start-4{grid-column-start:4}.lg\:g-start-5{grid-column-start:5}.lg\:g-start-6{grid-column-start:6}.lg\:g-start-7{grid-column-start:7}.lg\:g-start-8{grid-column-start:8}.lg\:g-start-9{grid-column-start:9}.lg\:g-start-10{grid-column-start:10}.lg\:g-start-11{grid-column-start:11}}@media (width>=1280px){.xl\:g-col-1{grid-column:auto/span 1}.xl\:g-col-2{grid-column:auto/span 2}.xl\:g-col-3{grid-column:auto/span 3}.xl\:g-col-4{grid-column:auto/span 4}.xl\:g-col-5{grid-column:auto/span 5}.xl\:g-col-6{grid-column:auto/span 6}.xl\:g-col-7{grid-column:auto/span 7}.xl\:g-col-8{grid-column:auto/span 8}.xl\:g-col-9{grid-column:auto/span 9}.xl\:g-col-10{grid-column:auto/span 10}.xl\:g-col-11{grid-column:auto/span 11}.xl\:g-col-12{grid-column:auto/span 12}.xl\:g-start-1{grid-column-start:1}.xl\:g-start-2{grid-column-start:2}.xl\:g-start-3{grid-column-start:3}.xl\:g-start-4{grid-column-start:4}.xl\:g-start-5{grid-column-start:5}.xl\:g-start-6{grid-column-start:6}.xl\:g-start-7{grid-column-start:7}.xl\:g-start-8{grid-column-start:8}.xl\:g-start-9{grid-column-start:9}.xl\:g-start-10{grid-column-start:10}.xl\:g-start-11{grid-column-start:11}}@media (width>=1536px){.\32 xl\:g-col-1{grid-column:auto/span 1}.\32 xl\:g-col-2{grid-column:auto/span 2}.\32 xl\:g-col-3{grid-column:auto/span 3}.\32 xl\:g-col-4{grid-column:auto/span 4}.\32 xl\:g-col-5{grid-column:auto/span 5}.\32 xl\:g-col-6{grid-column:auto/span 6}.\32 xl\:g-col-7{grid-column:auto/span 7}.\32 xl\:g-col-8{grid-column:auto/span 8}.\32 xl\:g-col-9{grid-column:auto/span 9}.\32 xl\:g-col-10{grid-column:auto/span 10}.\32 xl\:g-col-11{grid-column:auto/span 11}.\32 xl\:g-col-12{grid-column:auto/span 12}.\32 xl\:g-start-1{grid-column-start:1}.\32 xl\:g-start-2{grid-column-start:2}.\32 xl\:g-start-3{grid-column-start:3}.\32 xl\:g-start-4{grid-column-start:4}.\32 xl\:g-start-5{grid-column-start:5}.\32 xl\:g-start-6{grid-column-start:6}.\32 xl\:g-start-7{grid-column-start:7}.\32 xl\:g-start-8{grid-column-start:8}.\32 xl\:g-start-9{grid-column-start:9}.\32 xl\:g-start-10{grid-column-start:10}.\32 xl\:g-start-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-type:""}.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:5%;--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:10%;--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:7.5%;--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%;margin-bottom:var(--bs-spacer);vertical-align:var(--bs-table-cell-vertical-align);border-color:var(--bs-theme-border,var(--bs-table-border-color))}.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-fg,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-fg,var(--bs-table-striped-color));--bs-table-bg-type:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-striped-bg-factor), transparent)}.table-active{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-active-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-active-bg-factor), transparent)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-hover-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-hover-bg-factor), transparent)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.sm\:table-responsive{container-type:inline-size}@media (width<576px){.sm\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.md\:table-responsive{container-type:inline-size}@media (width<768px){.md\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.lg\:table-responsive{container-type:inline-size}@media (width<1024px){.lg\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.xl\:table-responsive{container-type:inline-size}@media (width<1280px){.xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.\32 xl\:table-responsive{container-type:inline-size}@media (width<1536px){.\32 xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}@container (width<576px){.sm\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sm\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.sm\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.sm\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.sm\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.sm\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.sm\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<768px){.md\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.md\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.md\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.md\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.md\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.md\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.md\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1024px){.lg\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lg\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.lg\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.lg\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.lg\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.lg\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.lg\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1280px){.xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1536px){.\32 xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\32 xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.\32 xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.\32 xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.\32 xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.\32 xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.\32 xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}.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-radius-5);--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-line-height:1.5;--bs-content-gap:calc(var(--bs-content-font-size) * var(--bs-content-line-height));--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);line-height:var(--bs-content-line-height);flex-direction:column;margin-inline:auto;display:flex;position:relative}@media (width>=1024px){.prose{--bs-content-font-size:var(--bs-font-size-md);--bs-content-line-height:1.625}}.prose :where(p,ul,ol,dl,pre,table,blockquote):not(:where(.not-prose,.not-prose *)){margin-block:0}.prose :where(ul,ol):not([class],: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],: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],:where(.not-prose,.not-prose *)) code{color:inherit;font-weight:600}.prose :where(h1,h2):not(:first-child,:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) * .75)}.prose :where(h3,h4,h5,h6):not(:first-child,: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;-webkit-text-decoration-color:color-mix(in srgb, var(--bs-link-color) 25%, transparent);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{-webkit-text-decoration-color:var(--bs-link-hover-color);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,inherit);font-style:var(--bs-label-font-style,inherit);font-weight:var(--bs-label-font-weight,500);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-2);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-radius-5);--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='%23ffffff80' 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,[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);pointer-events:none;background-color:var(--bs-control-action-bg);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,[readonly])::file-selector-button{background-color:var(--bs-control-action-hover-bg)}.form-control-plaintext{--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-radius-5);--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='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");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,.form-control-caret{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"]),.form-control-caret[multiple],.form-control-caret[size]:not([size="1"]){background-image:none;padding-inline-end:var(--bs-control-padding-x)}[data-bs-theme=dark] select.form-control,[data-bs-theme=dark] .form-control-caret{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,[readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-radius-5);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-radius-5);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}.check{--bs-check-size:1.25rem;--bs-check-margin-block:.125rem;--bs-check-bg:var(--bs-bg-body);--bs-check-border-color:var(--bs-border-color);--bs-check-border-radius:var(--bs-radius-5);--bs-check-icon-checked:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e");--bs-check-icon-indeterminate:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e");--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);width:var(--bs-check-size);height:var(--bs-check-size);margin-block:var(--bs-check-margin-block);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:33%;flex-shrink:0;position:relative}.check:checked,.check: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:checked:before,.check:indeterminate:before{pointer-events:none;content:"";background-color:var(--bs-theme-contrast,var(--bs-primary-contrast));position:absolute;inset:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.check:checked:before{mask-image:var(--bs-check-icon-checked)}.check:indeterminate:before{mask-image:var(--bs-check-icon-indeterminate)}.check:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:-1px}.check:disabled{--bs-check-bg:var(--bs-check-disabled-bg)}.check:disabled~label{color:var(--bs-fg-3);cursor:default}.check:disabled:checked{opacity:var(--bs-check-disabled-opacity)}.check-sm{--bs-check-size:1rem}.check-sm+label{font-size:var(--bs-font-size-sm)}.check-lg{--bs-check-size:1.5rem;--bs-check-margin-block:.375rem}.check-lg+label{font-size:var(--bs-font-size-lg)}.radio{--bs-radio-size:1.25rem;--bs-radio-margin-block:.125rem;--bs-radio-bg:var(--bs-bg-body);--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{inset:calc(var(--bs-radio-size) * .25);content:"";background-color:currentColor;border-radius:50%;position:absolute}.radio:disabled{--bs-radio-bg:var(--bs-radio-disabled-bg)}.radio:disabled~label{color:var(--bs-secondary-fg);cursor:default}.radio:disabled:checked{opacity:var(--bs-radio-disabled-opacity)}.radio:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.radio-sm{--bs-radio-size:1rem}.radio-sm+label{font-size:var(--bs-font-size-sm)}.radio-lg{--bs-radio-size:1.5rem;--bs-radio-margin-block:.375rem}.radio-lg+label{font-size:var(--bs-font-size-lg)}.switch{--bs-switch-height:1.25rem;--bs-switch-width:calc(var(--bs-switch-height) * 1.75);--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-indicator-width:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--bs-switch-indicator-height:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--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;transition:background-color .15s ease-in-out;position:relative;box-shadow:inset 0 1px 2px #0000000d}.switch:before{inset-block:var(--bs-switch-padding);width:var(--bs-switch-indicator-width);height:var(--bs-switch-indicator-height);content:"";background-color:var(--bs-theme-contrast,var(--bs-switch-indicator-bg));border-radius:10rem;transition:inset-inline-start .15s ease-in-out;position:absolute;inset-inline-start:var(--bs-switch-padding);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:disabled:not(:checked)){--bs-switch-bg:var(--bs-switch-disabled-bg);--bs-switch-indicator-bg:var(--bs-switch-disabled-indicator-bg)}.switch:has(input:disabled:not(:checked)):before{opacity:.4}.switch:has(input:disabled:not(:checked))~label{color:var(--bs-fg-3);cursor:default}.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))}.switch:has(input:checked):before{inset-inline-start:calc(100% - var(--bs-switch-indicator-width) - var(--bs-switch-padding))}.switch:has(input:checked:disabled){opacity:.65}.switch:has(input:checked:disabled)~label{color:var(--bs-fg-3);cursor:default}.switch-sm{--bs-switch-height:1rem}.switch-sm+label{font-size:var(--bs-font-size-sm)}.switch-lg{--bs-switch-height:1.5rem;--bs-switch-margin-block:.375rem}.switch-lg+label{font-size:var(--bs-font-size-lg)}.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-fill-bg:var(--bs-primary-base);--bs-range-track-disabled-bg:color-mix(in oklch, var(--bs-bg-4), var(--bs-fg-3));--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:var(--bs-range-thumb-bg) solid var(--bs-border-color);--bs-range-thumb-border-radius:1rem;--bs-range-thumb-box-shadow:0 1px 2px #00000013, 0 2px 4px #00000013;--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);--bs-range-tick-width:var(--bs-border-width);--bs-range-tick-height:.5rem;--bs-range-tick-bg:var(--bs-border-color);width:100%;display:block;position:relative}.form-range-input{width:100%;height:calc(var(--bs-range-thumb-height) + var(--bs-focus-ring-width) * 2);appearance:none;background-color:#0000;padding:0;display:block}.form-range-input:hover::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range-input:hover::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range-input:focus-visible{outline:0}.form-range-input:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range-input:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range-input::-moz-focus-outer{border:0}.form-range-input::-webkit-slider-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range-input::-webkit-slider-thumb{transition:none}}.form-range-input::-webkit-slider-thumb:active{background-color:var(--bs-range-thumb-active-bg);background-image:var(--bs-gradient)}.form-range-input::-webkit-slider-thumb{margin-top:calc((var(--bs-range-track-height) - var(--bs-range-thumb-height)) * .5)}.form-range-input::-moz-range-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range-input::-moz-range-thumb{transition:none}}.form-range-input::-moz-range-thumb:active{background-color:var(--bs-range-thumb-active-bg);background-image:var(--bs-gradient)}.form-range-input::-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);background-image:linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill,0) * 100%), transparent calc(var(--bs-range-fill,0) * 100%));border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range-input::-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);background-image:linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill,0) * 100%), transparent calc(var(--bs-range-fill,0) * 100%));border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range-input:disabled{pointer-events:none}.form-range-input:disabled::-webkit-slider-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range-input:disabled::-moz-range-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range-input:disabled::-webkit-slider-runnable-track{--bs-range-track-fill-bg:var(--bs-range-track-disabled-bg)}.form-range-input:disabled::-moz-range-track{--bs-range-track-fill-bg:var(--bs-range-track-disabled-bg)}.form-range-bubble{bottom:100%;left:calc(var(--bs-range-thumb-width) * .5 + var(--bs-range-fill,0) * (100% - var(--bs-range-thumb-width)));margin-bottom:var(--bs-tooltip-arrow-height);pointer-events:none;position:absolute;transform:translate(-50%)}.form-range-bubble .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height));position:absolute;left:50%;transform:translate(-50%)}.form-range-ticks{padding-inline:calc(var(--bs-range-thumb-width) * .25);display:grid}.form-range-tick{flex-direction:column;justify-self:start;align-items:center;width:0;display:flex}.form-range-tick:before{width:var(--bs-range-tick-width);height:var(--bs-range-tick-height);content:"";background-color:var(--bs-range-tick-bg)}.form-range-tick:first-child{align-items:flex-start}.form-range-tick:last-child{align-items:flex-end}.form-range-tick-label{font-size:var(--bs-font-size-sm);color:var(--bs-fg-2);white-space:nowrap;margin-top:.125rem}.form-floating{--bs-form-floating-height:calc(3.75rem + var(--bs-border-width) * 2);--bs-form-floating-line-height:1.25;--bs-form-floating-padding-x:calc(var(--bs-btn-input-padding-x) * 1.25);--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-bg:var(--bs-btn-input-bg);--bs-form-floating-label-disabled-bg:var(--bs-bg-2);--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-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>label:has(~textarea){align-items:flex-start}.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>label:has(~.form-control:focus),.form-floating>label:has(~.form-control:not(:placeholder-shown)),.form-floating>label:has(~.form-control-plaintext){transform:var(--bs-form-floating-label-transform)}.form-floating>label:has(~.form-control:-webkit-autofill){transform:var(--bs-form-floating-label-transform)}.form-floating>label:has(~textarea:focus):after,.form-floating>label:has(~textarea:not(:placeholder-shown)):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-form-floating-label-bg);border-radius:var(--bs-btn-input-border-radius);position:absolute}.form-floating>label:has(~textarea:disabled):after{background-color:var(--bs-form-floating-label-disabled-bg)}.form-floating>label:has(~.form-control-plaintext){border-width:var(--bs-control-border-width) 0}.form-floating>label:has(~:disabled),.form-floating>label:has(~.form-control:disabled){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-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-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;-webkit-user-select: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-radius-5);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){cursor:not-allowed;background-color:var(--bs-bg-2);opacity:1}.chip-input.disabled:focus-within,.chip-input:has(.form-ghost:disabled):focus-within{border-color:var(--bs-control-border-color);outline:0}.chip-input.disabled>.chip,.chip-input:has(.form-ghost:disabled)>.chip{pointer-events:none;opacity:var(--bs-control-disabled-opacity)}.form-field{gap:.5rem;display:grid;position:relative}.form-field>label,.form-field>.form-label{justify-self:start;margin-bottom:0}.form-field:has(>.check,>.radio,>.switch){grid-template-columns:auto 1fr;align-items:start;column-gap:.5rem}.form-field:has(>.check,>.radio,>.switch)>.check,.form-field:has(>.check,>.radio,>.switch)>.radio,.form-field:has(>.check,>.radio,>.switch)>.switch{grid-column:1}.form-field:has(>.check,>.radio,>.switch)>:not(.check,.radio,.switch){grid-column:2}.form-field:has(>.check,>.radio,>.switch)>.form-label{grid-column:1/-1}.form-field-content{flex-direction:column;align-items:flex-start;display:flex}.form-field-card{padding:calc(var(--bs-spacer) * .75);cursor:pointer;border:var(--bs-border-width) solid transparent;border-radius:var(--bs-radius-7);position:relative}.form-field-card:hover{background-color:var(--bs-bg-1)}.form-field-card:has(:checked){background-color:var(--bs-bg-1);border-color:var(--bs-border-color)}.form-field-card label:before{content:"";position:absolute;inset:0}.form-group{gap:.5rem;display:grid}.form-group>label,.form-group>.form-label,.form-group>legend{justify-self:start;margin-bottom:0}}@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);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(:last-child,.menu-toggle-split,.menu,.input-group-ignore,.form-floating,:has(+:is(.menu,.input-group-ignore):last-child)),.input-group>.menu-toggle-split:nth-last-child(n+3),.input-group>.form-floating:not(:last-child)>.form-control,.input-group>.form-floating:not(:last-child)>.form-select{border-start-end-radius:0;border-end-end-radius:0}.input-group>:not(:first-child,.menu,.input-group-ignore){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1 * var(--bs-border-width))}.input-group>:first-child.input-group-ignore+:not(.menu,.input-group-ignore){border-start-start-radius:var(--bs-btn-input-border-radius);border-end-start-radius:var(--bs-btn-input-border-radius)}.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;--bs-otp-slot-fg:var(--bs-btn-input-fg);--bs-otp-slot-bg:var(--bs-btn-input-bg);--bs-otp-slot-border-width:var(--bs-border-width);--bs-otp-slot-border-color:var(--bs-border-color);--bs-otp-slot-border-radius:var(--bs-radius-5);display:flex;position:relative}.otp-rendered .otp-input{color:#0000;text-align:center;cursor:default;caret-color:#0000;width:100%;height:100%;box-shadow:none;background-color:#0000;border:0;outline:0;padding:0;position:absolute;inset:0}.otp-rendered .otp-input::selection{color:#0000;background-color:#0000}.otp-slots{gap:var(--bs-otp-gap);pointer-events:none;display:inline-flex}.otp-slot{width:var(--bs-otp-size);min-height:var(--bs-otp-size);font-size:var(--bs-otp-font-size);color:var(--bs-otp-slot-fg);background-color:var(--bs-otp-slot-bg);border:var(--bs-otp-slot-border-width) solid var(--bs-otp-slot-border-color);border-radius:var(--bs-otp-slot-border-radius);box-shadow:var(--bs-box-shadow-inset);justify-content:center;align-items:center;font-weight:500;line-height:1;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex}@media (prefers-reduced-motion:reduce){.otp-slot{transition:none}}.otp-slot-active{--bs-focus-ring-offset:-1px;z-index:1;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.otp-slot-active:not(.otp-slot-filled):after{content:"";background-color:var(--bs-otp-slot-fg);width:1px;height:50%;animation:1s step-end infinite otp-caret-blink}.otp-input:disabled~.otp-slots .otp-slot{background-color:var(--bs-bg-2)}.otp-connected .otp-slots{gap:0}.otp-connected .otp-slot{border-radius:0}.otp-connected .otp-slot:not(:first-child){margin-inline-start:calc(var(--bs-otp-slot-border-width) * -1)}.otp-connected .otp-slot:first-child{border-start-start-radius:var(--bs-otp-slot-border-radius);border-end-start-radius:var(--bs-otp-slot-border-radius)}.otp-connected .otp-slot:last-child{border-start-end-radius:var(--bs-otp-slot-border-radius);border-end-end-radius:var(--bs-otp-slot-border-radius)}.otp-separator{padding-inline:var(--bs-otp-gap);font-size:var(--bs-otp-font-size);color:var(--bs-fg-4);-webkit-user-select:none;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)}.otp-lg{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-lg-font-size)}.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}.valid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-success-fg);display:none}.tooltip.valid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-success-contrast);text-align:center;background-color:var(--bs-success-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,:is([data-bs-validate~=valid] :user-valid~.valid-feedback,[data-bs-validate~=valid] :user-valid~.valid-tooltip){display:block}.form-control.is-valid{--bs-control-border-color:var(--bs-success-border)}.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);--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid{--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-success-border)}.check.is-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}.check.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .check:user-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .check:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.check.is-valid) .valid-feedback,.form-field:has(.check.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.check:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip){display:block}.radio.is-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}.radio.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .radio:user-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .radio:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.radio.is-valid) .valid-feedback,.form-field:has(.radio.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.radio:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip){display:block}.switch:has(input.is-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}.switch:has(input.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .switch:has(input:user-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .switch:has(input:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.switch input.is-valid) .valid-feedback,.form-field:has(.switch input.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip){display:block}.chip-input:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.chip-input:has(.form-ghost.is-valid):focus-within{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)}.chip-input:has(.form-ghost.is-valid)~.valid-feedback,.chip-input:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within{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)}:is([data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-adorn:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.form-adorn:has(.form-ghost.is-valid):focus-within{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)}.form-adorn:has(.form-ghost.is-valid)~.valid-feedback,.form-adorn:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within{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)}:is([data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-range-input.is-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}.form-range-input.is-valid::-moz-range-thumb{background:var(--bs-success-bg)}.form-range-input.is-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range-input.is-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range:has(.form-range-input.is-valid)~.valid-feedback,.form-range:has(.form-range-input.is-valid)~.valid-tooltip,.form-field:has(.input-group .form-control.is-valid) .valid-feedback,.form-field:has(.input-group .form-control.is-valid) .valid-tooltip,:is([data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip){display:block}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,:is([data-bs-validate~=valid] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-valid){z-index:3}.otp.is-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}.otp.is-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .otp:user-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .otp:user-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.invalid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-danger-fg);display:none}.tooltip.invalid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-danger-contrast);text-align:center;background-color:var(--bs-danger-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,:is([data-bs-validate] :user-invalid~.invalid-feedback,[data-bs-validate] :user-invalid~.invalid-tooltip){display:block}.form-control.is-invalid{--bs-control-border-color:var(--bs-danger-border)}.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);--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid{--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-danger-border)}.check.is-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}.check.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .check:user-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .check:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.check.is-invalid) .invalid-feedback,.form-field:has(.check.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.check:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip){display:block}.radio.is-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}.radio.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .radio:user-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .radio:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.radio.is-invalid) .invalid-feedback,.form-field:has(.radio.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.radio:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip){display:block}.switch:has(input.is-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}.switch:has(input.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .switch:has(input:user-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .switch:has(input:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.switch input.is-invalid) .invalid-feedback,.form-field:has(.switch input.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.switch input:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip){display:block}.chip-input:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.chip-input:has(.form-ghost.is-invalid):focus-within{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)}.chip-input:has(.form-ghost.is-invalid)~.invalid-feedback,.chip-input:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within{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)}:is([data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-adorn:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.form-adorn:has(.form-ghost.is-invalid):focus-within{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)}.form-adorn:has(.form-ghost.is-invalid)~.invalid-feedback,.form-adorn:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within{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)}:is([data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-range-input.is-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}.form-range-input.is-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}.form-range-input.is-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range-input.is-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range:has(.form-range-input.is-invalid)~.invalid-feedback,.form-range:has(.form-range-input.is-invalid)~.invalid-tooltip,.form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,.form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip,:is([data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip){display:block}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,:is([data-bs-validate] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-invalid){z-index:4}.otp.is-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}.otp.is-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .otp:user-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}[data-bs-validate] .otp:user-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.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-radius-5);--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;-webkit-user-select:none;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);background-image:none}.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-fg);--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-fg);--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-fg);--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-fg);--bs-btn-border-color:transparent;--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-fg-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-fg);--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-fg-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-fg-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-fg);--bs-btn-disabled-border-color:transparent}.btn-text{--bs-btn-color:var(--bs-theme-fg);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-active-color:oklch(from var(--bs-theme-fg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-text:hover{--bs-btn-hover-color:oklch(from var(--bs-theme-fg) 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-fg) 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-fg);--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-fg,var(--bs-btn-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);background-image:none}.btn-link:focus-visible{color:var(--bs-theme-fg,var(--bs-btn-color))}.btn-link:hover{color:var(--bs-theme-fg-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);background-image:none}.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;background-image: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-group-divider>[class*=btn-]+[class*=btn-]:before{z-index:3;content:"";background-color:var(--bs-btn-color);opacity:.25;position:absolute}.btn-group:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:25%;bottom:25%;left:calc(var(--bs-btn-border-width) * -1);width:var(--bs-btn-border-width)}.btn-group-vertical:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:calc(var(--bs-btn-border-width) * -1);right:var(--bs-btn-padding-x);left:var(--bs-btn-padding-x);height:var(--bs-btn-border-width)}.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,:has(+.menu)),.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}.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,:has(+.menu)),.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.5rem;--bs-btn-close-color:inherit;--bs-btn-close-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e");--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;min-width:var(--bs-btn-close-size);min-height:var(--bs-btn-close-size);color:var(--bs-btn-close-color);border-radius:var(--bs-radius-5);opacity:var(--bs-btn-close-opacity);mask-image:var(--bs-btn-close-icon);background-color:currentColor;border:0;padding:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.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;-webkit-user-select: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-radius-7));--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::-webkit-details-marker{display: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)}@media (prefers-reduced-motion:no-preference){.accordion-item{interpolate-size:allow-keywords}}.accordion-item::details-content{block-size:0;transition:content-visibility .2s allow-discrete, block-size .2s;overflow-y:clip}@media (prefers-reduced-motion:reduce){.accordion-item::details-content{transition:none}}.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]::details-content{block-size:auto}.accordion-item[open]>.accordion-header{color:var(--bs-theme-fg,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:var(--bs-spacer-3);--bs-alert-bg:var(--bs-theme-bg-subtle,var(--bs-bg-1));--bs-alert-padding-x:var(--bs-spacer);--bs-alert-padding-y:var(--bs-spacer);--bs-alert-color:var(--bs-theme-fg,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-radius-5);--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>p{margin-bottom:0}.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>.avatar-img{object-fit:cover;width:100%;height:100%}.avatar-subtle{color:var(--bs-theme-fg,var(--bs-avatar-color));background-color:var(--bs-theme-bg-subtle,var(--bs-avatar-bg))}.avatar-img{border-radius:var(--bs-avatar-border-radius,50%)}.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>.avatar{--bs-avatar-size:1.5rem;--bs-avatar-status-size:.625rem}.avatar-sm,.avatar-stack-sm>.avatar{--bs-avatar-size:2rem}.avatar-lg,.avatar-stack-lg>.avatar{--bs-avatar-size:3rem;--bs-avatar-status-size:1rem;--bs-avatar-border-width:3px}.avatar-xl,.avatar-stack-xl>.avatar{--bs-avatar-size:4rem;--bs-avatar-status-size:1.25rem;--bs-avatar-border-width:4px}.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-radius-7);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-fg);--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-fg);--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-radius-5);--bs-breadcrumb-divider-color:var(--bs-fg-4);--bs-breadcrumb-divider-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e");--bs-breadcrumb-divider-width:.375rem;--bs-breadcrumb-divider-height:.75rem;--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-radius-7);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-type:"";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-divider:empty:before{width:var(--bs-breadcrumb-divider-width);height:var(--bs-breadcrumb-divider-height);content:"";mask-image:var(--bs-breadcrumb-divider-icon);background-color:currentColor;display:block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.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-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-fg,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);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:var(--bs-spacer-5);--bs-card-spacer-x:var(--bs-spacer-5);--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-radius-7);--bs-card-box-shadow:none;--bs-card-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-card-cap-padding-y:var(--bs-spacer-3);--bs-card-cap-padding-x:var(--bs-spacer);--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:var(--bs-card-spacer-y);--bs-card-group-margin:.75rem;--bs-card-body-gap:calc(var(--bs-card-spacer-y) * .5);min-width:0;height:var(--bs-card-height);color:var(--bs-fg-body);word-wrap:break-word;background-color:var(--bs-card-bg);border-radius:var(--bs-card-border-radius);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,:last-child),.card-list:not(:first-child,:last-child){border-block-end-width:var(--bs-card-border-width)}.card-body:has(+.card-footer),.card-list:has(+.card-footer){border-block-end-width:0}.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-translucent{background-color:color-mix(in oklch, var(--bs-card-bg) 80%, transparent);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))}.card-subtle .card-header,.card-subtle .card-footer{color:var(--bs-theme-fg-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,:last-child),.card-row .card-list:not(:first-child,: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)}@container (width>=576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-inline-start:calc(-1 * var(--bs-card-border-width))}.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,.card-group>.card:not(:last-child)>.card-body{border-start-end-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-body{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,.card-group>.card:not(:first-child)>.card-body{border-start-start-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-body{border-end-start-radius:0}}.carousel{--bs-carousel-gap:.75rem;--bs-carousel-indicator-bg:var(--bs-fg-3);--bs-carousel-indicator-width:.75rem;--bs-carousel-indicator-height:.75rem;--bs-carousel-indicator-spacer:.25rem;--bs-carousel-indicator-transition:opacity .6s ease, width .3s ease;--bs-carousel-indicator-progress-bg:var(--bs-carousel-indicator-bg);--bs-carousel-control-icon-width:1rem;--bs-carousel-control-prev-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>");--bs-carousel-control-play-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>");--bs-carousel-items:1;--bs-carousel-items-gap:0px;--bs-carousel-items-peek:0px;--bs-carousel-fade-duration:.6s;gap:var(--bs-carousel-gap);flex-direction:column;display:flex;position:relative}.carousel-inner{gap:var(--bs-carousel-items-gap);width:100%;padding-inline:var(--bs-carousel-items-peek);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--bs-carousel-items-peek);scrollbar-width:none;display:flex;overflow-x:auto}.carousel-inner::-webkit-scrollbar{display:none}@media (prefers-reduced-motion:no-preference){.carousel-inner{scroll-behavior:smooth}}.carousel-item{flex:0 0 calc((100% - (var(--bs-carousel-items) - 1) * var(--bs-carousel-items-gap)) / var(--bs-carousel-items));scroll-snap-align:start;scroll-snap-stop:always;min-width:0}.carousel-center .carousel-item{scroll-snap-align:center}.carousel-auto .carousel-item{flex-basis:auto}.carousel-fade .carousel-inner{scroll-snap-type:none;display:grid;overflow:hidden}.carousel-fade .carousel-item{visibility:hidden;opacity:0;width:100%;transition:opacity var(--bs-carousel-fade-duration) ease, visibility 0s linear var(--bs-carousel-fade-duration);grid-area:1/1}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item{transition:none}}.carousel-fade .carousel-item.active{visibility:visible;opacity:1;transition:opacity var(--bs-carousel-fade-duration) ease}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item.active{transition:none}}.carousel-icon-prev,.carousel-icon-next,.carousel-icon-pause,.carousel-icon-play{width:var(--bs-carousel-control-icon-width);height:var(--bs-carousel-control-icon-width);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:100% 100%;mask-repeat:no-repeat}.carousel-icon-prev{mask-image:var(--bs-carousel-control-prev-icon)}.carousel-icon-next{mask-image:var(--bs-carousel-control-next-icon)}[dir=rtl] .carousel-icon-prev,[dir=rtl] .carousel-icon-next{transform:scaleX(-1)}.carousel-icon-pause{mask-image:var(--bs-carousel-control-pause-icon)}.carousel-icon-play{mask-image:var(--bs-carousel-control-play-icon)}.carousel-control-play-pause .carousel-icon-play,.carousel-control-play-pause.paused .carousel-icon-pause{display:none}.carousel-control-play-pause.paused .carousel-icon-play{display:inline-block}.carousel-indicators{gap:var(--bs-carousel-indicator-spacer);justify-content:center;display:flex}.carousel-indicators [data-bs-target]{width:var(--bs-carousel-indicator-width);height:var(--bs-carousel-indicator-height);cursor:pointer;border:1px solid var(--bs-carousel-indicator-bg);border-radius:var(--bs-carousel-indicator-width);transition:var(--bs-carousel-indicator-transition);background-color:#0000;flex:0 auto;padding:0}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{width:calc(var(--bs-carousel-indicator-width) * 2.5);background-color:var(--bs-carousel-indicator-bg);border-color:var(--bs-carousel-indicator-bg)}@keyframes carousel-indicator-progress{0%{inline-size:0}to{inline-size:100%}}@media (prefers-reduced-motion:no-preference){.carousel-playing .carousel-indicators .active{background-color:#0000;position:relative;overflow:hidden}.carousel-playing .carousel-indicators .active:after{content:"";background-color:var(--bs-carousel-indicator-progress-bg);inline-size:0;animation:carousel-indicator-progress var(--bs-carousel-interval,5s) linear forwards;position:absolute;inset-block:0;inset-inline-start:0}}.carousel-overlay{--bs-carousel-indicator-bg:light-dark(var(--bs-white),var(--bs-black))}.carousel-overlay .carousel-overlay-controls{z-index:1;justify-content:space-between;align-items:center;display:flex;position:absolute;inset-block-end:1rem;inset-inline:1rem}[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-radius-7);--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);box-shadow:var(--bs-datepicker-box-shadow);opacity:1;border-radius:var(--bs-datepicker-border-radius);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-radius-5);background-color:#0000;border:0;display:block;position:relative}[data-vc-arrow]:before{content:"";background-color:var(--bs-datepicker-color);position:absolute;inset:.25rem;mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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>");mask-position:50%;mask-repeat:no-repeat}[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-radius-5);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));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-radius-5);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-radius-5);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-radius-5);border-end-start-radius:var(--bs-radius-5)}[data-vc-date-hover=last] [data-vc-date-btn]{border-start-end-radius:var(--bs-radius-5);border-end-end-radius:var(--bs-radius-5)}[data-vc-date-hover=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}[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-radius-5);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bs-radius-5)}[data-vc-date-selected=last] [data-vc-date-btn]{border-top-left-radius:0;border-top-right-radius:var(--bs-radius-5);border-bottom-right-radius:var(--bs-radius-5);border-bottom-left-radius:0}[data-vc-date-selected=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}.dialog-open{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-radius-7);--bs-dialog-box-shadow:var(--bs-box-shadow-lg);--bs-dialog-transition-duration:.3s;--bs-dialog-transition-timing:cubic-bezier(.22, 1, .36, 1);--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;width:var(--bs-dialog-width);max-width:calc(100% - var(--bs-dialog-margin) * 2);max-height:calc(100% - var(--bs-dialog-margin) * 2);color:var(--bs-dialog-color);visibility:hidden;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;flex-direction:column;margin:auto;padding:0;display:flex;overflow:visible}.dialog:not(.dialog-instant){opacity:0;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s var(--bs-dialog-transition-duration)}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant){transition:none}}.dialog:not(.dialog-instant).dialog-slide-down{transform:translateY(-3rem)}.dialog:not(.dialog-instant).dialog-slide-up{transform:translateY(3rem)}.dialog:not(.dialog-instant)[open]:not(.hiding){visibility:visible;opacity:1;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s;overflow:visible}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)[open]:not(.hiding){transition:none}}.dialog:not(.dialog-instant)[open]:not(.hiding){transform:none}.dialog:not(.dialog-instant)[open].dialog-static:not(.hiding){transform:scale(1.02)}.dialog:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur));transition:background-color var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), backdrop-filter var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), display var(--bs-dialog-transition-duration) allow-discrete, overlay var(--bs-dialog-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)::backdrop{transition:none}}.dialog:not(.dialog-instant).hiding::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-instant::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}.dialog[open]:not(.hiding){visibility:visible;opacity:1;overflow:visible;transform:none}.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-scrollable[open]{max-height:calc(100% - var(--bs-dialog-margin) * 2)}.dialog.dialog-scrollable[open] .dialog-body{overflow-y:auto}@starting-style{.dialog:not(.dialog-instant)::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-swap-in:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}}.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){.sm-down\: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<768px){.md-down\: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<1024px){.lg-down\: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<1280px){.xl-down\: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<1536px){.\32 xl-down\: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}}.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{line-height:1.5;font-size:var(--bs-font-size-md);margin-bottom:0}.dialog-body{padding:var(--bs-dialog-padding);flex:auto;position:relative}.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-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:.5rem;--bs-menu-item-padding-x:.75rem;--bs-menu-item-padding-y:.25rem;--bs-menu-item-border-radius:var(--bs-radius-5);--bs-menu-icon-size:1rem;--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:.75rem;--bs-menu-header-padding-y:.25rem;--bs-menu-transition-duration:.15s;--bs-menu-transition-timing:cubic-bezier(.22, 1, .36, 1);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-radius-7));box-shadow:var(--bs-menu-box-shadow);opacity:0;transform-origin:top start;background-clip:padding-box;flex-direction:column;margin:0;list-style-type:"";display:none;position:absolute;transform:scale(.95)}.menu[data-bs-placement^=top]{transform-origin:bottom start}.menu[data-bs-placement=bottom-end]{transform-origin:top end}.menu[data-bs-placement=top-end]{transform-origin:bottom end}.menu[data-bs-placement^=left]{transform-origin:top end}.menu{transition:opacity var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), transform var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), display var(--bs-menu-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.menu{transition:none}}.menu.show{opacity:1;display:flex;transform:none}@starting-style{.menu.show{opacity:0;transform:scale(.95)}}.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-fg,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-fg-emphasis,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.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:#0000;background-image:none}.menu-item-icon{width:var(--bs-menu-icon-size);flex-shrink:0;align-self:flex-start;height:auto;margin-top:.125rem}.menu-item-content{flex-direction:column;flex:1;min-width:fit-content;display:flex}.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{color:var(--bs-menu-check-color);visibility:hidden;flex-shrink:0;align-self:flex-start;margin-block-start:.125rem;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)}.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-radius-5);--bs-list-group-item-padding-x:var(--bs-spacer);--bs-list-group-item-padding-y:var(--bs-spacer-2);--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-fg,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-fg,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-fg-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-fg-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))}@container (width>=576px){.sm\:list-group-horizontal{flex-direction:row}.sm\: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)}.sm\: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}.sm\:list-group-horizontal>.list-group-item.active{margin-top:0}.sm\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.sm\: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))}}@container (width>=768px){.md\:list-group-horizontal{flex-direction:row}.md\: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)}.md\: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}.md\:list-group-horizontal>.list-group-item.active{margin-top:0}.md\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.md\: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))}}@container (width>=1024px){.lg\:list-group-horizontal{flex-direction:row}.lg\: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)}.lg\: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}.lg\:list-group-horizontal>.list-group-item.active{margin-top:0}.lg\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.lg\: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))}}@container (width>=1280px){.xl\:list-group-horizontal{flex-direction:row}.xl\: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)}.xl\: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}.xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.xl\: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))}}@container (width>=1536px){.\32 xl\:list-group-horizontal{flex-direction:row}.\32 xl\: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)}.\32 xl\: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}.\32 xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.\32 xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.\32 xl\: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))}}.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-type:"";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-radius-5);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-radius-5);--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-bg:var(--bs-bg-1);--bs-nav-pills-padding:.25rem;--bs-nav-pills-border-radius:var(--bs-radius-9);--bs-nav-pills-link-active-color:var(--bs-primary-contrast);--bs-nav-pills-link-active-bg:var(--bs-primary-bg);--bs-nav-pills-link-border-radius:var(--bs-radius-9);padding:var(--bs-nav-pills-padding);background-color:var(--bs-nav-pills-bg);border-radius:var(--bs-nav-pills-border-radius);display:inline-flex}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-link-border-radius)}.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);background-image:var(--bs-gradient)}.nav-pills-vertical{flex-direction:column;align-items:stretch}.nav-pills-vertical .nav-item,.nav-pills-vertical .nav-link{width:100%}.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-pills.nav-overflow{display:flex}.navbar-nav.nav-overflow{flex:1 1 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-radius-5);--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;--bs-navbar-toggler-icon-size:1.25rem;--bs-navbar-toggler-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e");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>.\32 xl\:container,.navbar>.xl\:container,.navbar>.lg\:container,.navbar>.md\:container,.navbar>.sm\:container,.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-type:"";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-toggler-icon{width:var(--bs-navbar-toggler-icon-size);height:var(--bs-navbar-toggler-icon-size);mask-image:var(--bs-navbar-toggler-icon);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.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 [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.navbar-expand [class*=drawer] .drawer-header{display:none!important}.navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}@container (width>=576px){.sm\:navbar-expand>.container,.sm\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.sm\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.sm\:navbar-expand .navbar-toggler{display:none!important}.sm\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.sm\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.sm\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=768px){.md\:navbar-expand>.container,.md\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.md\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.md\:navbar-expand .navbar-toggler{display:none!important}.md\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.md\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.md\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1024px){.lg\:navbar-expand>.container,.lg\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.lg\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.lg\:navbar-expand .navbar-toggler{display:none!important}.lg\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.lg\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.lg\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1280px){.xl\:navbar-expand>.container,.xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.xl\:navbar-expand .navbar-toggler{display:none!important}.xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1536px){.\32 xl\:navbar-expand>.container,.\32 xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.\32 xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.\32 xl\:navbar-expand .navbar-toggler{display:none!important}.\32 xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}.navbar [class*=drawer]:not([open],.hiding){transition:none!important}@media (prefers-reduced-motion:reduce){.navbar [class*=drawer]:not([open],.hiding){transition:none}}.navbar-translucent{background-color:#0000;position:relative}.navbar-translucent:before{z-index:-1;content:"";background-color:color-mix(in oklch, var(--bs-navbar-bg,var(--bs-bg-body)) 80%, transparent);backdrop-filter:blur(5px)saturate(180%);background-image:none;position:absolute;inset:0}.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){.sm\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.sm\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.sm\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant){transition:none}}@media (width<576px){.sm\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-start),.sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-bottom),.sm\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<576px){.sm\:drawer[open]{visibility:visible;transform:none}}@media (width>=576px){.sm\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=576px) and (prefers-reduced-motion:reduce){.sm\:drawer{transition:none}}@media (width>=576px){.sm\:drawer .drawer-header{display:none}.sm\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<768px){.md\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.md\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.md\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant){transition:none}}@media (width<768px){.md\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-start),.md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-bottom),.md\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<768px){.md\:drawer[open]{visibility:visible;transform:none}}@media (width>=768px){.md\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=768px) and (prefers-reduced-motion:reduce){.md\:drawer{transition:none}}@media (width>=768px){.md\:drawer .drawer-header{display:none}.md\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1024px){.lg\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.lg\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.lg\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant){transition:none}}@media (width<1024px){.lg\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-start),.lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-bottom),.lg\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1024px){.lg\:drawer[open]{visibility:visible;transform:none}}@media (width>=1024px){.lg\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1024px) and (prefers-reduced-motion:reduce){.lg\:drawer{transition:none}}@media (width>=1024px){.lg\:drawer .drawer-header{display:none}.lg\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1280px){.xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1280px){.xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-start),.xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1280px){.xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1280px){.xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1280px) and (prefers-reduced-motion:reduce){.xl\:drawer{transition:none}}@media (width>=1280px){.xl\:drawer .drawer-header{display:none}.xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1536px){.\32 xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.\32 xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.\32 xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1536px){.\32 xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-start),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1536px){.\32 xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1536px){.\32 xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer{transition:none}}@media (width>=1536px){.\32 xl\:drawer .drawer-header{display:none}.\32 xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}.drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant){transition:none}}.drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start),.drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-bottom),.drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant)[open]{transition:none}}.drawer:not(.drawer-instant)[open]{transform:none}.drawer[open]{visibility:visible;transform:none}.sm\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.sm\:drawer::backdrop{transition:none}}.md\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.md\:drawer::backdrop{transition:none}}.lg\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.lg\:drawer::backdrop{transition:none}}.xl\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.xl\:drawer::backdrop{transition:none}}.\32 xl\:drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.\32 xl\:drawer::backdrop{transition:none}}.drawer::backdrop{--bs-drawer-backdrop-bg:var(--bs-bg-body);--bs-drawer-backdrop-opacity:25%;--bs-drawer-backdrop-blur:8px;--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;background-color:color-mix(in oklch, var(--bs-drawer-backdrop-bg) var(--bs-drawer-backdrop-opacity), transparent);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.drawer::backdrop{transition:none}}@starting-style{.sm\:drawer::backdrop,.md\:drawer::backdrop,.lg\:drawer::backdrop,.xl\:drawer::backdrop,.\32 xl\:drawer::backdrop,.drawer::backdrop{backdrop-filter:blur();background-color:#0000}}.drawer-static{transform:scale(1.02)}.drawer-translucent{background-color:color-mix(in oklch, var(--bs-drawer-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.drawer-sheet{--bs-drawer-inset:0;--bs-drawer-border-radius:0;--bs-drawer-border-width:0;--bs-drawer-box-shadow:none}.drawer-header{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-shrink:0;align-items:center;display:flex}.drawer-header .btn-close{margin-block:calc(-.5 * var(--bs-drawer-padding-y));margin-inline-start:auto}.drawer-title{line-height:var(--bs-drawer-title-line-height);margin-bottom:0}.drawer-body{gap:var(--bs-drawer-padding-y);padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.drawer-footer{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);border-block-start:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.drawer-fit-content{inset-block-end:auto}.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-type:"";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);background-image:var(--bs-gradient);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{mask-image:linear-gradient(130deg, #000 55%, rgb(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-radius-7);--bs-popover-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:var(--bs-spacer);--bs-popover-header-padding-y:var(--bs-spacer-3);--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:var(--bs-spacer);--bs-popover-body-padding-y:var(--bs-spacer-3);--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-radius-5);--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}}.stepper{--bs-stepper-size:2rem;--bs-stepper-gap:1rem;--bs-stepper-font-size:var(--bs-font-size-sm);--bs-stepper-text-gap:.5rem;--bs-stepper-track-size:.125rem;--bs-stepper-bg:var(--bs-bg-2);--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-inline-start:0;list-style-type:"";display:grid}.stepper-item{grid-template-rows:auto;grid-template-columns:var(--bs-stepper-size) auto;gap:var(--bs-stepper-text-gap);align-items:var(--bs-stepper-align-items,center);text-decoration:none;display:grid;position:relative}.stepper-item:before{z-index:1;width:var(--bs-stepper-size);height:var(--bs-stepper-size);font-size:var(--bs-stepper-font-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{width:var(--bs-stepper-track-size);height:calc(100% + var(--bs-stepper-gap));content:"";background-color:var(--bs-stepper-bg);position:absolute;inset-block:50% 100%;inset-inline-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5)}.stepper-item:last-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-item.active:not(:has(+.stepper-item.active)):after{background-color:var(--bs-stepper-bg)}.stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.stepper-horizontal .stepper-item:last-child:after{right:100%}@container (width>=576px){.sm\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.sm\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.sm\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.sm\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=768px){.md\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.md\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.md\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.md\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1024px){.lg\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.lg\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.lg\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.lg\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1280px){.xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1536px){.\32 xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.\32 xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.\32 xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.\32 xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}.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%}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:1rem;--bs-toast-padding-y:.75rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:var(--bs-font-size-sm);--bs-toast-bg:var(--bs-bg-body);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-fg-3);--bs-toast-header-bg:var(--bs-bg-1);--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,var(--bs-fg-body));pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-theme-border,var(--bs-toast-border-color));box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius,var(--bs-radius-7));background-clip:padding-box;flex-direction:column;display:flex;overflow:hidden}.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-theme-fg-emphasis,var(--bs-toast-header-color));background-color:var(--bs-theme-bg-subtle,var(--bs-toast-header-bg));border-block-end:var(--bs-toast-border-width,var(--bs-border-width)) solid var(--bs-theme-border,var(--bs-toast-header-border-color,var(--bs-border-color-translucent)));align-items:center;display:flex}.toast-header .btn-close{color:inherit;margin-inline-start:calc(.5 * var(--bs-toast-padding-x));margin-inline-end:calc(-.25 * var(--bs-toast-padding-x))}.toast-translucent{backdrop-filter:blur(5px)saturate(180%)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:var(--bs-spacer-3);--bs-tooltip-padding-y:calc(var(--bs-spacer) * .375);--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-radius-5);--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)}}@layer custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-theme-focus-ring,var(--bs-focus-ring-color))}.icon-link{-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity,.5));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){.sm\:sticky-top{z-index:1020;position:sticky;top:0}.sm\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.md\:sticky-top{z-index:1020;position:sticky;top:0}.md\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.lg\:sticky-top{z-index:1020;position:sticky;top:0}.lg\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.xl\:sticky-top{z-index:1020;position:sticky;top:0}.xl\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.\32 xl\:sticky-top{z-index:1020;position:sticky;top:0}.\32 xl\:sticky-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){.sm\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.sm\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.md\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.md\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.lg\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.lg\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.\32 xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.\32 xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-fg:var(--bs-primary-fg);--bs-theme-fg-emphasis:var(--bs-primary-fg-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-fg:var(--bs-accent-fg);--bs-theme-fg-emphasis:var(--bs-accent-fg-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-fg:var(--bs-success-fg);--bs-theme-fg-emphasis:var(--bs-success-fg-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-fg:var(--bs-danger-fg);--bs-theme-fg-emphasis:var(--bs-danger-fg-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-fg:var(--bs-warning-fg);--bs-theme-fg-emphasis:var(--bs-warning-fg-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-fg:var(--bs-info-fg);--bs-theme-fg-emphasis:var(--bs-info-fg-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-fg:var(--bs-inverse-fg);--bs-theme-fg-emphasis:var(--bs-inverse-fg-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-fg:var(--bs-secondary-fg);--bs-theme-fg-emphasis:var(--bs-secondary-fg-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,: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,:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus,: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{object-fit:contain}.object-fit-cover{object-fit:cover}.object-fit-fill{object-fit:fill}.object-fit-scale{object-fit:scale-down}.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}.contains-inline{container-type:inline-size}.contains-size{container-type:size}.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}.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{inset-inline-start:0}.start-50{inset-inline-start:50%}.start-100{inset-inline-start:100%}.end-0{inset-inline-end:0}.end-50{inset-inline-end:50%}.end-100{inset-inline-end: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-y{border-block:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-y-0{border-block:0}.border-x{border-inline:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-x-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-primary-bg);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-accent-bg);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-success-bg);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-danger-bg);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-warning-bg);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-info-bg);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:var(--bs-inverse-bg);border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:var(--bs-secondary-bg);border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-border-bg);border-color:var(--bs-border-color)}.border-body{--bs-border-color:var(--bs-border-body);border-color:var(--bs-border-color)}.border-muted{--bs-border-color:var(--bs-border-muted);border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:var(--bs-border-subtle);border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:var(--bs-border-emphasized);border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-border-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-border-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:var(--bs-primary-border);border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:var(--bs-accent-border);border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:var(--bs-success-border);border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:var(--bs-danger-border);border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:var(--bs-warning-border);border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:var(--bs-info-border);border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:var(--bs-inverse-border);border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:var(--bs-secondary-border);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:start}.justify-self-end{justify-self: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-1{grid-template-columns:1fr}.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-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:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-7{margin:2rem}.m-8{margin:2.5rem}.m-9{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:.75rem}.mx-4{margin-inline:1rem}.mx-5{margin-inline:1.25rem}.mx-6{margin-inline:1.5rem}.mx-7{margin-inline:2rem}.mx-8{margin-inline:2.5rem}.mx-9{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:.75rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.my-6{margin-block:1.5rem}.my-7{margin-block:2rem}.my-8{margin-block:2.5rem}.my-9{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:.75rem}.mt-4{margin-block-start:1rem}.mt-5{margin-block-start:1.25rem}.mt-6{margin-block-start:1.5rem}.mt-7{margin-block-start:2rem}.mt-8{margin-block-start:2.5rem}.mt-9{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:.75rem}.me-4{margin-inline-end:1rem}.me-5{margin-inline-end:1.25rem}.me-6{margin-inline-end:1.5rem}.me-7{margin-inline-end:2rem}.me-8{margin-inline-end:2.5rem}.me-9{margin-inline-end:3rem}.me--1{margin-inline-end:-.25rem}.me--2{margin-inline-end:-.5rem}.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:.75rem}.mb-4{margin-block-end:1rem}.mb-5{margin-block-end:1.25rem}.mb-6{margin-block-end:1.5rem}.mb-7{margin-block-end:2rem}.mb-8{margin-block-end:2.5rem}.mb-9{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:.75rem}.ms-4{margin-inline-start:1rem}.ms-5{margin-inline-start:1.25rem}.ms-6{margin-inline-start:1.5rem}.ms-7{margin-inline-start:2rem}.ms-8{margin-inline-start:2.5rem}.ms-9{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:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:2rem}.p-8{padding:2.5rem}.p-9{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-5{padding-inline:1.25rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:2rem}.px-8{padding-inline:2.5rem}.px-9{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.py-5{padding-block:1.25rem}.py-6{padding-block:1.5rem}.py-7{padding-block:2rem}.py-8{padding-block:2.5rem}.py-9{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:.75rem}.pt-4{padding-block-start:1rem}.pt-5{padding-block-start:1.25rem}.pt-6{padding-block-start:1.5rem}.pt-7{padding-block-start:2rem}.pt-8{padding-block-start:2.5rem}.pt-9{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:.75rem}.pe-4{padding-inline-end:1rem}.pe-5{padding-inline-end:1.25rem}.pe-6{padding-inline-end:1.5rem}.pe-7{padding-inline-end:2rem}.pe-8{padding-inline-end:2.5rem}.pe-9{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:.75rem}.pb-4{padding-block-end:1rem}.pb-5{padding-block-end:1.25rem}.pb-6{padding-block-end:1.5rem}.pb-7{padding-block-end:2rem}.pb-8{padding-block-end:2.5rem}.pb-9{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:.75rem}.ps-4{padding-inline-start:1rem}.ps-5{padding-inline-start:1.25rem}.ps-6{padding-inline-start:1.5rem}.ps-7{padding-inline-start:2rem}.ps-8{padding-inline-start:2.5rem}.ps-9{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:2rem}.gap-8{gap:2.5rem}.gap-9{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:.75rem}.row-gap-4{row-gap:1rem}.row-gap-5{row-gap:1.25rem}.row-gap-6{row-gap:1.5rem}.row-gap-7{row-gap:2rem}.row-gap-8{row-gap:2.5rem}.row-gap-9{row-gap:3rem}.column-gap-0{column-gap:0}.column-gap-1{column-gap:.25rem}.column-gap-2{column-gap:.5rem}.column-gap-3{column-gap:.75rem}.column-gap-4{column-gap:1rem}.column-gap-5{column-gap:1.25rem}.column-gap-6{column-gap:1.5rem}.column-gap-7{column-gap:2rem}.column-gap-8{column-gap:2.5rem}.column-gap-9{column-gap:3rem}:where(.space-x-0>:not(:last-child)){margin-inline-end:0}:where(.space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.space-y-0>:not(:last-child)){margin-block-end:0}:where(.space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-x-0>:not(:first-child)){border-inline-start:0}:where(.divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-y-0>:not(:first-child)){border-block-start:0}.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{text-wrap:wrap}.text-nowrap{text-wrap:nowrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:var(--bs-primary-fg);color:var(--bs-fg)}.fg-accent{--bs-fg:var(--bs-accent-fg);color:var(--bs-fg)}.fg-success{--bs-fg:var(--bs-success-fg);color:var(--bs-fg)}.fg-danger{--bs-fg:var(--bs-danger-fg);color:var(--bs-fg)}.fg-warning{--bs-fg:var(--bs-warning-fg);color:var(--bs-fg)}.fg-info{--bs-fg:var(--bs-info-fg);color:var(--bs-fg)}.fg-inverse{--bs-fg:var(--bs-inverse-fg);color:var(--bs-fg)}.fg-secondary{--bs-fg:var(--bs-secondary-fg);color:var(--bs-fg)}.fg-body{--bs-fg:var(--bs-fg-body);color:var(--bs-fg)}.fg-1{--bs-fg:var(--bs-fg-1);color:var(--bs-fg)}.fg-2{--bs-fg:var(--bs-fg-2);color:var(--bs-fg)}.fg-3{--bs-fg:var(--bs-fg-3);color:var(--bs-fg)}.fg-4{--bs-fg:var(--bs-fg-4);color:var(--bs-fg)}.fg-bg{--bs-fg:var(--bs-fg-bg);color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-fg-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-fg-black);color:var(--bs-fg)}.fg-reset{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:var(--bs-primary-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:var(--bs-accent-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:var(--bs-success-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:var(--bs-danger-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:var(--bs-warning-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:var(--bs-info-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:var(--bs-inverse-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:var(--bs-secondary-fg-emphasis);color:var(--bs-fg)}.fg-contrast-primary{--bs-fg:var(--bs-primary-contrast);color:var(--bs-fg)}.fg-contrast-accent{--bs-fg:var(--bs-accent-contrast);color:var(--bs-fg)}.fg-contrast-success{--bs-fg:var(--bs-success-contrast);color:var(--bs-fg)}.fg-contrast-danger{--bs-fg:var(--bs-danger-contrast);color:var(--bs-fg)}.fg-contrast-warning{--bs-fg:var(--bs-warning-contrast);color:var(--bs-fg)}.fg-contrast-info{--bs-fg:var(--bs-info-contrast);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:var(--bs-inverse-contrast);color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:var(--bs-secondary-contrast);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,.hover\:link-10:hover{color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.link-20,.hover\:link-20:hover{color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.link-30,.hover\:link-30:hover{color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.link-40,.hover\:link-40:hover{color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.link-50,.hover\:link-50:hover{color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.link-60,.hover\:link-60:hover{color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.link-70,.hover\:link-70:hover{color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.link-80,.hover\:link-80:hover{color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.link-90,.hover\:link-90:hover{color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.link-100,.hover\:link-100:hover{color:var(--bs-link-color)}.underline-offset-1,.hover\:underline-offset-1:hover{text-underline-offset:.125em}.underline-offset-2,.hover\:underline-offset-2:hover{text-underline-offset:.25em}.underline-offset-3,.hover\:underline-offset-3:hover{text-underline-offset:.375em}.underline-primary{-webkit-text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400));text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{-webkit-text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)))}.underline-success{-webkit-text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400));text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{-webkit-text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400));text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{-webkit-text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{-webkit-text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{-webkit-text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200));text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{-webkit-text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400));text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.hover\:underline-10:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.underline-20,.hover\:underline-20:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.underline-30,.hover\:underline-30:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.underline-40,.hover\:underline-40:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.underline-50,.hover\:underline-50:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.underline-60,.hover\:underline-60:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.underline-70,.hover\:underline-70:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.underline-80,.hover\:underline-80:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.underline-90,.hover\:underline-90:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.underline-100,.hover\:underline-100:hover{-webkit-text-decoration-color:var(--bs-link-color);text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.hover\:underline-thickness-1:hover{text-decoration-thickness:1px}.underline-thickness-2,.hover\:underline-thickness-2:hover{text-decoration-thickness:2px}.underline-thickness-3,.hover\:underline-thickness-3:hover{text-decoration-thickness:3px}.underline-thickness-4,.hover\:underline-thickness-4:hover{text-decoration-thickness:4px}.underline-thickness-5,.hover\:underline-thickness-5:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-primary-bg);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-accent-bg);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-success-bg);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-danger-bg);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-warning-bg);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-info-bg);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:var(--bs-inverse-bg);background-color:var(--bs-bg)}.bg-secondary{--bs-bg:var(--bs-secondary-bg);background-color:var(--bs-bg)}.bg-body{--bs-bg:var(--bs-bg-body);background-color:var(--bs-bg)}.bg-1{--bs-bg:var(--bs-bg-1);background-color:var(--bs-bg)}.bg-2{--bs-bg:var(--bs-bg-2);background-color:var(--bs-bg)}.bg-3{--bs-bg:var(--bs-bg-3);background-color:var(--bs-bg)}.bg-4{--bs-bg:var(--bs-bg-4);background-color:var(--bs-bg)}.bg-fg{--bs-bg:var(--bs-bg-fg);background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-bg-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-bg-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:var(--bs-bg-transparent);background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:var(--bs-primary-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:var(--bs-accent-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:var(--bs-success-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:var(--bs-danger-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:var(--bs-warning-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:var(--bs-info-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:var(--bs-inverse-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:var(--bs-secondary-bg-subtle);background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:var(--bs-primary-bg-muted);background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:var(--bs-accent-bg-muted);background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:var(--bs-success-bg-muted);background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:var(--bs-danger-bg-muted);background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:var(--bs-warning-bg-muted);background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:var(--bs-info-bg-muted);background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:var(--bs-inverse-bg-muted);background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:var(--bs-secondary-bg-muted);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-fg)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-fg-emphasis)}.theme-border{border:var(--bs-border-width) solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{-webkit-user-select:all;user-select:all}.user-select-auto{-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}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded-0{--bs-rounded-size:0;border-radius:var(--bs-rounded-size)}.rounded-1{--bs-rounded-size:.125rem;border-radius:var(--bs-rounded-size)}.rounded-2{--bs-rounded-size:.1875rem;border-radius:var(--bs-rounded-size)}.rounded-3{--bs-rounded-size:.25rem;border-radius:var(--bs-rounded-size)}.rounded-4{--bs-rounded-size:.375rem;border-radius:var(--bs-rounded-size)}.rounded-5{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-6{--bs-rounded-size:.625rem;border-radius:var(--bs-rounded-size)}.rounded-7{--bs-rounded-size:.75rem;border-radius:var(--bs-rounded-size)}.rounded-8{--bs-rounded-size:1rem;border-radius:var(--bs-rounded-size)}.rounded-9{--bs-rounded-size:1.5rem;border-radius:var(--bs-rounded-size)}.rounded{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-circle{--bs-rounded-size:50%;border-radius:var(--bs-rounded-size)}.rounded-pill{--bs-rounded-size:var(--bs-radius-pill);border-radius:var(--bs-rounded-size)}.rounded-size-0{--bs-rounded-size:0}.rounded-size-1{--bs-rounded-size:.125rem}.rounded-size-2{--bs-rounded-size:.1875rem}.rounded-size-3{--bs-rounded-size:.25rem}.rounded-size-4{--bs-rounded-size:.375rem}.rounded-size-5{--bs-rounded-size:.5rem}.rounded-size-6{--bs-rounded-size:.625rem}.rounded-size-7{--bs-rounded-size:.75rem}.rounded-size-8{--bs-rounded-size:1rem}.rounded-size-9{--bs-rounded-size:1.5rem}.rounded-size{--bs-rounded-size:.5rem}.rounded-size-circle{--bs-rounded-size:50%}.rounded-size-pill{--bs-rounded-size:var(--bs-radius-pill)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:.125rem;border-start-end-radius:.125rem}.rounded-top-2{border-start-start-radius:.1875rem;border-start-end-radius:.1875rem}.rounded-top-3{border-start-start-radius:.25rem;border-start-end-radius:.25rem}.rounded-top-4{border-start-start-radius:.375rem;border-start-end-radius:.375rem}.rounded-top-5{border-start-start-radius:.5rem;border-start-end-radius:.5rem}.rounded-top-6{border-start-start-radius:.625rem;border-start-end-radius:.625rem}.rounded-top-7{border-start-start-radius:.75rem;border-start-end-radius:.75rem}.rounded-top-8{border-start-start-radius:1rem;border-start-end-radius:1rem}.rounded-top-9{border-start-start-radius:1.5rem;border-start-end-radius:1.5rem}.rounded-top{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-radius-pill);border-start-end-radius:var(--bs-radius-pill)}.rounded-end-0{border-start-end-radius:0;border-end-end-radius:0}.rounded-end-1{border-start-end-radius:.125rem;border-end-end-radius:.125rem}.rounded-end-2{border-start-end-radius:.1875rem;border-end-end-radius:.1875rem}.rounded-end-3{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-end-4{border-start-end-radius:.375rem;border-end-end-radius:.375rem}.rounded-end-5{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-end-6{border-start-end-radius:.625rem;border-end-end-radius:.625rem}.rounded-end-7{border-start-end-radius:.75rem;border-end-end-radius:.75rem}.rounded-end-8{border-start-end-radius:1rem;border-end-end-radius:1rem}.rounded-end-9{border-start-end-radius:1.5rem;border-end-end-radius:1.5rem}.rounded-end{border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-end-circle{border-start-end-radius:50%;border-end-end-radius:50%}.rounded-end-pill{border-start-end-radius:var(--bs-radius-pill);border-end-end-radius:var(--bs-radius-pill)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:.125rem;border-end-start-radius:.125rem}.rounded-bottom-2{border-end-end-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-bottom-3{border-end-end-radius:.25rem;border-end-start-radius:.25rem}.rounded-bottom-4{border-end-end-radius:.375rem;border-end-start-radius:.375rem}.rounded-bottom-5{border-end-end-radius:.5rem;border-end-start-radius:.5rem}.rounded-bottom-6{border-end-end-radius:.625rem;border-end-start-radius:.625rem}.rounded-bottom-7{border-end-end-radius:.75rem;border-end-start-radius:.75rem}.rounded-bottom-8{border-end-end-radius:1rem;border-end-start-radius:1rem}.rounded-bottom-9{border-end-end-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-bottom{border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-radius-pill)}.rounded-start-0{border-start-start-radius:0;border-end-start-radius:0}.rounded-start-1{border-start-start-radius:.125rem;border-end-start-radius:.125rem}.rounded-start-2{border-start-start-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-start-3{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-start-4{border-start-start-radius:.375rem;border-end-start-radius:.375rem}.rounded-start-5{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.rounded-start-6{border-start-start-radius:.625rem;border-end-start-radius:.625rem}.rounded-start-7{border-start-start-radius:.75rem;border-end-start-radius:.75rem}.rounded-start-8{border-start-start-radius:1rem;border-end-start-radius:1rem}.rounded-start-9{border-start-start-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-start{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-start-circle{border-start-start-radius:50%;border-end-start-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-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){.sm\:float-start{float:inline-start}.sm\:float-end{float:inline-end}.sm\:float-none{float:none}.sm\:object-fit-contain{object-fit:contain}.sm\:object-fit-cover{object-fit:cover}.sm\:object-fit-fill{object-fit:fill}.sm\:object-fit-scale{object-fit:scale-down}.sm\:object-fit-none{object-fit:none}.sm\:d-inline{display:inline}.sm\:d-inline-block{display:inline-block}.sm\:d-block{display:block}.sm\:d-grid{display:grid}.sm\:d-inline-grid{display:inline-grid}.sm\:d-table{display:table}.sm\:d-table-row{display:table-row}.sm\:d-table-cell{display:table-cell}.sm\:d-flex{display:flex}.sm\:d-inline-flex{display:inline-flex}.sm\:d-contents{display:contents}.sm\:d-flow-root{display:flow-root}.sm\:d-none{display:none}.sm\:flex-fill{flex:auto}.sm\:flex-row{flex-direction:row}.sm\:flex-column{flex-direction:column}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-column-reverse{flex-direction:column-reverse}.sm\:flex-grow-0{flex-grow:0}.sm\:flex-grow-1{flex-grow:1}.sm\:flex-shrink-0{flex-shrink:0}.sm\:flex-shrink-1{flex-shrink:1}.sm\:flex-wrap{flex-wrap:wrap}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:flex-wrap-reverse{flex-wrap:wrap-reverse}.sm\:justify-content-start{justify-content:flex-start}.sm\:justify-content-end{justify-content:flex-end}.sm\:justify-content-center{justify-content:center}.sm\:justify-content-between{justify-content:space-between}.sm\:justify-content-around{justify-content:space-around}.sm\:justify-content-evenly{justify-content:space-evenly}.sm\:justify-items-start{justify-items:start}.sm\:justify-items-end{justify-items:end}.sm\:justify-items-center{justify-items:center}.sm\:justify-items-stretch{justify-items:stretch}.sm\:justify-self-start{justify-self:start}.sm\:justify-self-end{justify-self:end}.sm\:justify-self-center{justify-self:center}.sm\:align-items-start{align-items:flex-start}.sm\:align-items-end{align-items:flex-end}.sm\:align-items-center{align-items:center}.sm\:align-items-baseline{align-items:baseline}.sm\:align-items-stretch{align-items:stretch}.sm\:align-content-start{align-content:flex-start}.sm\:align-content-end{align-content:flex-end}.sm\:align-content-center{align-content:center}.sm\:align-content-between{align-content:space-between}.sm\:align-content-around{align-content:space-around}.sm\:align-content-stretch{align-content:stretch}.sm\:align-self-auto{align-self:auto}.sm\:align-self-start{align-self:flex-start}.sm\:align-self-end{align-self:flex-end}.sm\:align-self-center{align-self:center}.sm\:align-self-baseline{align-self:baseline}.sm\:align-self-stretch{align-self:stretch}.sm\:place-items-start{place-items:start}.sm\:place-items-end{place-items:end}.sm\:place-items-center{place-items:center}.sm\:place-items-stretch{place-items:stretch stretch}.sm\:grid-cols-1{grid-template-columns:1fr}.sm\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.sm\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.sm\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.sm\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.sm\:grid-cols-fill{grid-column:1/-1}.sm\:grid-auto-flow-row{grid-auto-flow:row}.sm\:grid-auto-flow-column{grid-auto-flow:column}.sm\:grid-auto-flow-dense{grid-auto-flow:dense}.sm\:order-first{order:-1}.sm\:order-0{order:0}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:order-3{order:3}.sm\:order-4{order:4}.sm\:order-5{order:5}.sm\:order-last{order:6}.sm\:m-0{margin:0}.sm\:m-1{margin:.25rem}.sm\:m-2{margin:.5rem}.sm\:m-3{margin:.75rem}.sm\:m-4{margin:1rem}.sm\:m-5{margin:1.25rem}.sm\:m-6{margin:1.5rem}.sm\:m-7{margin:2rem}.sm\:m-8{margin:2.5rem}.sm\:m-9{margin:3rem}.sm\:m-auto{margin:auto}.sm\:mx-0{margin-inline:0}.sm\:mx-1{margin-inline:.25rem}.sm\:mx-2{margin-inline:.5rem}.sm\:mx-3{margin-inline:.75rem}.sm\:mx-4{margin-inline:1rem}.sm\:mx-5{margin-inline:1.25rem}.sm\:mx-6{margin-inline:1.5rem}.sm\:mx-7{margin-inline:2rem}.sm\:mx-8{margin-inline:2.5rem}.sm\:mx-9{margin-inline:3rem}.sm\:mx-auto{margin-inline:auto}.sm\:my-0{margin-block:0}.sm\:my-1{margin-block:.25rem}.sm\:my-2{margin-block:.5rem}.sm\:my-3{margin-block:.75rem}.sm\:my-4{margin-block:1rem}.sm\:my-5{margin-block:1.25rem}.sm\:my-6{margin-block:1.5rem}.sm\:my-7{margin-block:2rem}.sm\:my-8{margin-block:2.5rem}.sm\:my-9{margin-block:3rem}.sm\:my-auto{margin-block:auto}.sm\:mt-0{margin-block-start:0}.sm\:mt-1{margin-block-start:.25rem}.sm\:mt-2{margin-block-start:.5rem}.sm\:mt-3{margin-block-start:.75rem}.sm\:mt-4{margin-block-start:1rem}.sm\:mt-5{margin-block-start:1.25rem}.sm\:mt-6{margin-block-start:1.5rem}.sm\:mt-7{margin-block-start:2rem}.sm\:mt-8{margin-block-start:2.5rem}.sm\:mt-9{margin-block-start:3rem}.sm\:mt-auto{margin-block-start:auto}.sm\:me-0{margin-inline-end:0}.sm\:me-1{margin-inline-end:.25rem}.sm\:me-2{margin-inline-end:.5rem}.sm\:me-3{margin-inline-end:.75rem}.sm\:me-4{margin-inline-end:1rem}.sm\:me-5{margin-inline-end:1.25rem}.sm\:me-6{margin-inline-end:1.5rem}.sm\:me-7{margin-inline-end:2rem}.sm\:me-8{margin-inline-end:2.5rem}.sm\:me-9{margin-inline-end:3rem}.sm\:me--1{margin-inline-end:-.25rem}.sm\:me--2{margin-inline-end:-.5rem}.sm\:me-auto{margin-inline-end:auto}.sm\:mb-0{margin-block-end:0}.sm\:mb-1{margin-block-end:.25rem}.sm\:mb-2{margin-block-end:.5rem}.sm\:mb-3{margin-block-end:.75rem}.sm\:mb-4{margin-block-end:1rem}.sm\:mb-5{margin-block-end:1.25rem}.sm\:mb-6{margin-block-end:1.5rem}.sm\:mb-7{margin-block-end:2rem}.sm\:mb-8{margin-block-end:2.5rem}.sm\:mb-9{margin-block-end:3rem}.sm\:mb-auto{margin-block-end:auto}.sm\:ms-0{margin-inline-start:0}.sm\:ms-1{margin-inline-start:.25rem}.sm\:ms-2{margin-inline-start:.5rem}.sm\:ms-3{margin-inline-start:.75rem}.sm\:ms-4{margin-inline-start:1rem}.sm\:ms-5{margin-inline-start:1.25rem}.sm\:ms-6{margin-inline-start:1.5rem}.sm\:ms-7{margin-inline-start:2rem}.sm\:ms-8{margin-inline-start:2.5rem}.sm\:ms-9{margin-inline-start:3rem}.sm\:ms--1{margin-inline-start:-.25rem}.sm\:ms--2{margin-inline-start:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-7{padding:2rem}.sm\:p-8{padding:2.5rem}.sm\:p-9{padding:3rem}.sm\:px-0{padding-inline:0}.sm\:px-1{padding-inline:.25rem}.sm\:px-2{padding-inline:.5rem}.sm\:px-3{padding-inline:.75rem}.sm\:px-4{padding-inline:1rem}.sm\:px-5{padding-inline:1.25rem}.sm\:px-6{padding-inline:1.5rem}.sm\:px-7{padding-inline:2rem}.sm\:px-8{padding-inline:2.5rem}.sm\:px-9{padding-inline:3rem}.sm\:py-0{padding-block:0}.sm\:py-1{padding-block:.25rem}.sm\:py-2{padding-block:.5rem}.sm\:py-3{padding-block:.75rem}.sm\:py-4{padding-block:1rem}.sm\:py-5{padding-block:1.25rem}.sm\:py-6{padding-block:1.5rem}.sm\:py-7{padding-block:2rem}.sm\:py-8{padding-block:2.5rem}.sm\:py-9{padding-block:3rem}.sm\:pt-0{padding-block-start:0}.sm\:pt-1{padding-block-start:.25rem}.sm\:pt-2{padding-block-start:.5rem}.sm\:pt-3{padding-block-start:.75rem}.sm\:pt-4{padding-block-start:1rem}.sm\:pt-5{padding-block-start:1.25rem}.sm\:pt-6{padding-block-start:1.5rem}.sm\:pt-7{padding-block-start:2rem}.sm\:pt-8{padding-block-start:2.5rem}.sm\:pt-9{padding-block-start:3rem}.sm\:pe-0{padding-inline-end:0}.sm\:pe-1{padding-inline-end:.25rem}.sm\:pe-2{padding-inline-end:.5rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-4{padding-inline-end:1rem}.sm\:pe-5{padding-inline-end:1.25rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:pe-7{padding-inline-end:2rem}.sm\:pe-8{padding-inline-end:2.5rem}.sm\:pe-9{padding-inline-end:3rem}.sm\:pb-0{padding-block-end:0}.sm\:pb-1{padding-block-end:.25rem}.sm\:pb-2{padding-block-end:.5rem}.sm\:pb-3{padding-block-end:.75rem}.sm\:pb-4{padding-block-end:1rem}.sm\:pb-5{padding-block-end:1.25rem}.sm\:pb-6{padding-block-end:1.5rem}.sm\:pb-7{padding-block-end:2rem}.sm\:pb-8{padding-block-end:2.5rem}.sm\:pb-9{padding-block-end:3rem}.sm\:ps-0{padding-inline-start:0}.sm\:ps-1{padding-inline-start:.25rem}.sm\:ps-2{padding-inline-start:.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-4{padding-inline-start:1rem}.sm\:ps-5{padding-inline-start:1.25rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:ps-7{padding-inline-start:2rem}.sm\:ps-8{padding-inline-start:2.5rem}.sm\:ps-9{padding-inline-start:3rem}.sm\:gap-0{gap:0}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-5{gap:1.25rem}.sm\:gap-6{gap:1.5rem}.sm\:gap-7{gap:2rem}.sm\:gap-8{gap:2.5rem}.sm\:gap-9{gap:3rem}.sm\:row-gap-0{row-gap:0}.sm\:row-gap-1{row-gap:.25rem}.sm\:row-gap-2{row-gap:.5rem}.sm\:row-gap-3{row-gap:.75rem}.sm\:row-gap-4{row-gap:1rem}.sm\:row-gap-5{row-gap:1.25rem}.sm\:row-gap-6{row-gap:1.5rem}.sm\:row-gap-7{row-gap:2rem}.sm\:row-gap-8{row-gap:2.5rem}.sm\:row-gap-9{row-gap:3rem}.sm\:column-gap-0{column-gap:0}.sm\:column-gap-1{column-gap:.25rem}.sm\:column-gap-2{column-gap:.5rem}.sm\:column-gap-3{column-gap:.75rem}.sm\:column-gap-4{column-gap:1rem}.sm\:column-gap-5{column-gap:1.25rem}.sm\:column-gap-6{column-gap:1.5rem}.sm\:column-gap-7{column-gap:2rem}.sm\:column-gap-8{column-gap:2.5rem}.sm\:column-gap-9{column-gap:3rem}:where(.sm\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.sm\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.sm\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.sm\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.sm\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.sm\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.sm\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.sm\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.sm\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.sm\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.sm\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.sm\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.sm\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.sm\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.sm\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.sm\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.sm\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.sm\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.sm\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.sm\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.sm\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.sm\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-y-0>:not(:first-child)){border-block-start:0}.sm\:text-start{text-align:start}.sm\:text-end{text-align:end}.sm\:text-center{text-align:center}}@media (width>=768px){.md\:float-start{float:inline-start}.md\:float-end{float:inline-end}.md\:float-none{float:none}.md\:object-fit-contain{object-fit:contain}.md\:object-fit-cover{object-fit:cover}.md\:object-fit-fill{object-fit:fill}.md\:object-fit-scale{object-fit:scale-down}.md\:object-fit-none{object-fit:none}.md\:d-inline{display:inline}.md\:d-inline-block{display:inline-block}.md\:d-block{display:block}.md\:d-grid{display:grid}.md\:d-inline-grid{display:inline-grid}.md\:d-table{display:table}.md\:d-table-row{display:table-row}.md\:d-table-cell{display:table-cell}.md\:d-flex{display:flex}.md\:d-inline-flex{display:inline-flex}.md\:d-contents{display:contents}.md\:d-flow-root{display:flow-root}.md\:d-none{display:none}.md\:flex-fill{flex:auto}.md\:flex-row{flex-direction:row}.md\:flex-column{flex-direction:column}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:flex-column-reverse{flex-direction:column-reverse}.md\:flex-grow-0{flex-grow:0}.md\:flex-grow-1{flex-grow:1}.md\:flex-shrink-0{flex-shrink:0}.md\:flex-shrink-1{flex-shrink:1}.md\:flex-wrap{flex-wrap:wrap}.md\:flex-nowrap{flex-wrap:nowrap}.md\:flex-wrap-reverse{flex-wrap:wrap-reverse}.md\:justify-content-start{justify-content:flex-start}.md\:justify-content-end{justify-content:flex-end}.md\:justify-content-center{justify-content:center}.md\:justify-content-between{justify-content:space-between}.md\:justify-content-around{justify-content:space-around}.md\:justify-content-evenly{justify-content:space-evenly}.md\:justify-items-start{justify-items:start}.md\:justify-items-end{justify-items:end}.md\:justify-items-center{justify-items:center}.md\:justify-items-stretch{justify-items:stretch}.md\:justify-self-start{justify-self:start}.md\:justify-self-end{justify-self:end}.md\:justify-self-center{justify-self:center}.md\:align-items-start{align-items:flex-start}.md\:align-items-end{align-items:flex-end}.md\:align-items-center{align-items:center}.md\:align-items-baseline{align-items:baseline}.md\:align-items-stretch{align-items:stretch}.md\:align-content-start{align-content:flex-start}.md\:align-content-end{align-content:flex-end}.md\:align-content-center{align-content:center}.md\:align-content-between{align-content:space-between}.md\:align-content-around{align-content:space-around}.md\:align-content-stretch{align-content:stretch}.md\:align-self-auto{align-self:auto}.md\:align-self-start{align-self:flex-start}.md\:align-self-end{align-self:flex-end}.md\:align-self-center{align-self:center}.md\:align-self-baseline{align-self:baseline}.md\:align-self-stretch{align-self:stretch}.md\:place-items-start{place-items:start}.md\:place-items-end{place-items:end}.md\:place-items-center{place-items:center}.md\:place-items-stretch{place-items:stretch stretch}.md\:grid-cols-1{grid-template-columns:1fr}.md\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.md\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.md\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.md\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.md\:grid-cols-fill{grid-column:1/-1}.md\:grid-auto-flow-row{grid-auto-flow:row}.md\:grid-auto-flow-column{grid-auto-flow:column}.md\:grid-auto-flow-dense{grid-auto-flow:dense}.md\:order-first{order:-1}.md\:order-0{order:0}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:order-4{order:4}.md\:order-5{order:5}.md\:order-last{order:6}.md\:m-0{margin:0}.md\:m-1{margin:.25rem}.md\:m-2{margin:.5rem}.md\:m-3{margin:.75rem}.md\:m-4{margin:1rem}.md\:m-5{margin:1.25rem}.md\:m-6{margin:1.5rem}.md\:m-7{margin:2rem}.md\:m-8{margin:2.5rem}.md\:m-9{margin:3rem}.md\:m-auto{margin:auto}.md\:mx-0{margin-inline:0}.md\:mx-1{margin-inline:.25rem}.md\:mx-2{margin-inline:.5rem}.md\:mx-3{margin-inline:.75rem}.md\:mx-4{margin-inline:1rem}.md\:mx-5{margin-inline:1.25rem}.md\:mx-6{margin-inline:1.5rem}.md\:mx-7{margin-inline:2rem}.md\:mx-8{margin-inline:2.5rem}.md\:mx-9{margin-inline:3rem}.md\:mx-auto{margin-inline:auto}.md\:my-0{margin-block:0}.md\:my-1{margin-block:.25rem}.md\:my-2{margin-block:.5rem}.md\:my-3{margin-block:.75rem}.md\:my-4{margin-block:1rem}.md\:my-5{margin-block:1.25rem}.md\:my-6{margin-block:1.5rem}.md\:my-7{margin-block:2rem}.md\:my-8{margin-block:2.5rem}.md\:my-9{margin-block:3rem}.md\:my-auto{margin-block:auto}.md\:mt-0{margin-block-start:0}.md\:mt-1{margin-block-start:.25rem}.md\:mt-2{margin-block-start:.5rem}.md\:mt-3{margin-block-start:.75rem}.md\:mt-4{margin-block-start:1rem}.md\:mt-5{margin-block-start:1.25rem}.md\:mt-6{margin-block-start:1.5rem}.md\:mt-7{margin-block-start:2rem}.md\:mt-8{margin-block-start:2.5rem}.md\:mt-9{margin-block-start:3rem}.md\:mt-auto{margin-block-start:auto}.md\:me-0{margin-inline-end:0}.md\:me-1{margin-inline-end:.25rem}.md\:me-2{margin-inline-end:.5rem}.md\:me-3{margin-inline-end:.75rem}.md\:me-4{margin-inline-end:1rem}.md\:me-5{margin-inline-end:1.25rem}.md\:me-6{margin-inline-end:1.5rem}.md\:me-7{margin-inline-end:2rem}.md\:me-8{margin-inline-end:2.5rem}.md\:me-9{margin-inline-end:3rem}.md\:me--1{margin-inline-end:-.25rem}.md\:me--2{margin-inline-end:-.5rem}.md\:me-auto{margin-inline-end:auto}.md\:mb-0{margin-block-end:0}.md\:mb-1{margin-block-end:.25rem}.md\:mb-2{margin-block-end:.5rem}.md\:mb-3{margin-block-end:.75rem}.md\:mb-4{margin-block-end:1rem}.md\:mb-5{margin-block-end:1.25rem}.md\:mb-6{margin-block-end:1.5rem}.md\:mb-7{margin-block-end:2rem}.md\:mb-8{margin-block-end:2.5rem}.md\:mb-9{margin-block-end:3rem}.md\:mb-auto{margin-block-end:auto}.md\:ms-0{margin-inline-start:0}.md\:ms-1{margin-inline-start:.25rem}.md\:ms-2{margin-inline-start:.5rem}.md\:ms-3{margin-inline-start:.75rem}.md\:ms-4{margin-inline-start:1rem}.md\:ms-5{margin-inline-start:1.25rem}.md\:ms-6{margin-inline-start:1.5rem}.md\:ms-7{margin-inline-start:2rem}.md\:ms-8{margin-inline-start:2.5rem}.md\:ms-9{margin-inline-start:3rem}.md\:ms--1{margin-inline-start:-.25rem}.md\:ms--2{margin-inline-start:-.5rem}.md\:ms-auto{margin-inline-start:auto}.md\:p-0{padding:0}.md\:p-1{padding:.25rem}.md\:p-2{padding:.5rem}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:p-7{padding:2rem}.md\:p-8{padding:2.5rem}.md\:p-9{padding:3rem}.md\:px-0{padding-inline:0}.md\:px-1{padding-inline:.25rem}.md\:px-2{padding-inline:.5rem}.md\:px-3{padding-inline:.75rem}.md\:px-4{padding-inline:1rem}.md\:px-5{padding-inline:1.25rem}.md\:px-6{padding-inline:1.5rem}.md\:px-7{padding-inline:2rem}.md\:px-8{padding-inline:2.5rem}.md\:px-9{padding-inline:3rem}.md\:py-0{padding-block:0}.md\:py-1{padding-block:.25rem}.md\:py-2{padding-block:.5rem}.md\:py-3{padding-block:.75rem}.md\:py-4{padding-block:1rem}.md\:py-5{padding-block:1.25rem}.md\:py-6{padding-block:1.5rem}.md\:py-7{padding-block:2rem}.md\:py-8{padding-block:2.5rem}.md\:py-9{padding-block:3rem}.md\:pt-0{padding-block-start:0}.md\:pt-1{padding-block-start:.25rem}.md\:pt-2{padding-block-start:.5rem}.md\:pt-3{padding-block-start:.75rem}.md\:pt-4{padding-block-start:1rem}.md\:pt-5{padding-block-start:1.25rem}.md\:pt-6{padding-block-start:1.5rem}.md\:pt-7{padding-block-start:2rem}.md\:pt-8{padding-block-start:2.5rem}.md\:pt-9{padding-block-start:3rem}.md\:pe-0{padding-inline-end:0}.md\:pe-1{padding-inline-end:.25rem}.md\:pe-2{padding-inline-end:.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-4{padding-inline-end:1rem}.md\:pe-5{padding-inline-end:1.25rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:pe-7{padding-inline-end:2rem}.md\:pe-8{padding-inline-end:2.5rem}.md\:pe-9{padding-inline-end:3rem}.md\:pb-0{padding-block-end:0}.md\:pb-1{padding-block-end:.25rem}.md\:pb-2{padding-block-end:.5rem}.md\:pb-3{padding-block-end:.75rem}.md\:pb-4{padding-block-end:1rem}.md\:pb-5{padding-block-end:1.25rem}.md\:pb-6{padding-block-end:1.5rem}.md\:pb-7{padding-block-end:2rem}.md\:pb-8{padding-block-end:2.5rem}.md\:pb-9{padding-block-end:3rem}.md\:ps-0{padding-inline-start:0}.md\:ps-1{padding-inline-start:.25rem}.md\:ps-2{padding-inline-start:.5rem}.md\:ps-3{padding-inline-start:.75rem}.md\:ps-4{padding-inline-start:1rem}.md\:ps-5{padding-inline-start:1.25rem}.md\:ps-6{padding-inline-start:1.5rem}.md\:ps-7{padding-inline-start:2rem}.md\:ps-8{padding-inline-start:2.5rem}.md\:ps-9{padding-inline-start:3rem}.md\:gap-0{gap:0}.md\:gap-1{gap:.25rem}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-5{gap:1.25rem}.md\:gap-6{gap:1.5rem}.md\:gap-7{gap:2rem}.md\:gap-8{gap:2.5rem}.md\:gap-9{gap:3rem}.md\:row-gap-0{row-gap:0}.md\:row-gap-1{row-gap:.25rem}.md\:row-gap-2{row-gap:.5rem}.md\:row-gap-3{row-gap:.75rem}.md\:row-gap-4{row-gap:1rem}.md\:row-gap-5{row-gap:1.25rem}.md\:row-gap-6{row-gap:1.5rem}.md\:row-gap-7{row-gap:2rem}.md\:row-gap-8{row-gap:2.5rem}.md\:row-gap-9{row-gap:3rem}.md\:column-gap-0{column-gap:0}.md\:column-gap-1{column-gap:.25rem}.md\:column-gap-2{column-gap:.5rem}.md\:column-gap-3{column-gap:.75rem}.md\:column-gap-4{column-gap:1rem}.md\:column-gap-5{column-gap:1.25rem}.md\:column-gap-6{column-gap:1.5rem}.md\:column-gap-7{column-gap:2rem}.md\:column-gap-8{column-gap:2.5rem}.md\:column-gap-9{column-gap:3rem}:where(.md\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.md\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.md\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.md\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.md\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.md\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.md\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.md\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.md\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.md\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.md\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.md\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.md\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.md\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.md\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.md\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.md\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.md\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.md\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.md\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.md\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.md\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-y-0>:not(:first-child)){border-block-start:0}.md\:text-start{text-align:start}.md\:text-end{text-align:end}.md\:text-center{text-align:center}}@media (width>=1024px){.lg\:float-start{float:inline-start}.lg\:float-end{float:inline-end}.lg\:float-none{float:none}.lg\:object-fit-contain{object-fit:contain}.lg\:object-fit-cover{object-fit:cover}.lg\:object-fit-fill{object-fit:fill}.lg\:object-fit-scale{object-fit:scale-down}.lg\:object-fit-none{object-fit:none}.lg\:d-inline{display:inline}.lg\:d-inline-block{display:inline-block}.lg\:d-block{display:block}.lg\:d-grid{display:grid}.lg\:d-inline-grid{display:inline-grid}.lg\:d-table{display:table}.lg\:d-table-row{display:table-row}.lg\:d-table-cell{display:table-cell}.lg\:d-flex{display:flex}.lg\:d-inline-flex{display:inline-flex}.lg\:d-contents{display:contents}.lg\:d-flow-root{display:flow-root}.lg\:d-none{display:none}.lg\:flex-fill{flex:auto}.lg\:flex-row{flex-direction:row}.lg\:flex-column{flex-direction:column}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:flex-column-reverse{flex-direction:column-reverse}.lg\:flex-grow-0{flex-grow:0}.lg\:flex-grow-1{flex-grow:1}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-shrink-1{flex-shrink:1}.lg\:flex-wrap{flex-wrap:wrap}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:flex-wrap-reverse{flex-wrap:wrap-reverse}.lg\:justify-content-start{justify-content:flex-start}.lg\:justify-content-end{justify-content:flex-end}.lg\:justify-content-center{justify-content:center}.lg\:justify-content-between{justify-content:space-between}.lg\:justify-content-around{justify-content:space-around}.lg\:justify-content-evenly{justify-content:space-evenly}.lg\:justify-items-start{justify-items:start}.lg\:justify-items-end{justify-items:end}.lg\:justify-items-center{justify-items:center}.lg\:justify-items-stretch{justify-items:stretch}.lg\:justify-self-start{justify-self:start}.lg\:justify-self-end{justify-self:end}.lg\:justify-self-center{justify-self:center}.lg\:align-items-start{align-items:flex-start}.lg\:align-items-end{align-items:flex-end}.lg\:align-items-center{align-items:center}.lg\:align-items-baseline{align-items:baseline}.lg\:align-items-stretch{align-items:stretch}.lg\:align-content-start{align-content:flex-start}.lg\:align-content-end{align-content:flex-end}.lg\:align-content-center{align-content:center}.lg\:align-content-between{align-content:space-between}.lg\:align-content-around{align-content:space-around}.lg\:align-content-stretch{align-content:stretch}.lg\:align-self-auto{align-self:auto}.lg\:align-self-start{align-self:flex-start}.lg\:align-self-end{align-self:flex-end}.lg\:align-self-center{align-self:center}.lg\:align-self-baseline{align-self:baseline}.lg\:align-self-stretch{align-self:stretch}.lg\:place-items-start{place-items:start}.lg\:place-items-end{place-items:end}.lg\:place-items-center{place-items:center}.lg\:place-items-stretch{place-items:stretch stretch}.lg\:grid-cols-1{grid-template-columns:1fr}.lg\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.lg\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.lg\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.lg\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.lg\:grid-cols-fill{grid-column:1/-1}.lg\:grid-auto-flow-row{grid-auto-flow:row}.lg\:grid-auto-flow-column{grid-auto-flow:column}.lg\:grid-auto-flow-dense{grid-auto-flow:dense}.lg\:order-first{order:-1}.lg\:order-0{order:0}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-3{order:3}.lg\:order-4{order:4}.lg\:order-5{order:5}.lg\:order-last{order:6}.lg\:m-0{margin:0}.lg\:m-1{margin:.25rem}.lg\:m-2{margin:.5rem}.lg\:m-3{margin:.75rem}.lg\:m-4{margin:1rem}.lg\:m-5{margin:1.25rem}.lg\:m-6{margin:1.5rem}.lg\:m-7{margin:2rem}.lg\:m-8{margin:2.5rem}.lg\:m-9{margin:3rem}.lg\:m-auto{margin:auto}.lg\:mx-0{margin-inline:0}.lg\:mx-1{margin-inline:.25rem}.lg\:mx-2{margin-inline:.5rem}.lg\:mx-3{margin-inline:.75rem}.lg\:mx-4{margin-inline:1rem}.lg\:mx-5{margin-inline:1.25rem}.lg\:mx-6{margin-inline:1.5rem}.lg\:mx-7{margin-inline:2rem}.lg\:mx-8{margin-inline:2.5rem}.lg\:mx-9{margin-inline:3rem}.lg\:mx-auto{margin-inline:auto}.lg\:my-0{margin-block:0}.lg\:my-1{margin-block:.25rem}.lg\:my-2{margin-block:.5rem}.lg\:my-3{margin-block:.75rem}.lg\:my-4{margin-block:1rem}.lg\:my-5{margin-block:1.25rem}.lg\:my-6{margin-block:1.5rem}.lg\:my-7{margin-block:2rem}.lg\:my-8{margin-block:2.5rem}.lg\:my-9{margin-block:3rem}.lg\:my-auto{margin-block:auto}.lg\:mt-0{margin-block-start:0}.lg\:mt-1{margin-block-start:.25rem}.lg\:mt-2{margin-block-start:.5rem}.lg\:mt-3{margin-block-start:.75rem}.lg\:mt-4{margin-block-start:1rem}.lg\:mt-5{margin-block-start:1.25rem}.lg\:mt-6{margin-block-start:1.5rem}.lg\:mt-7{margin-block-start:2rem}.lg\:mt-8{margin-block-start:2.5rem}.lg\:mt-9{margin-block-start:3rem}.lg\:mt-auto{margin-block-start:auto}.lg\:me-0{margin-inline-end:0}.lg\:me-1{margin-inline-end:.25rem}.lg\:me-2{margin-inline-end:.5rem}.lg\:me-3{margin-inline-end:.75rem}.lg\:me-4{margin-inline-end:1rem}.lg\:me-5{margin-inline-end:1.25rem}.lg\:me-6{margin-inline-end:1.5rem}.lg\:me-7{margin-inline-end:2rem}.lg\:me-8{margin-inline-end:2.5rem}.lg\:me-9{margin-inline-end:3rem}.lg\:me--1{margin-inline-end:-.25rem}.lg\:me--2{margin-inline-end:-.5rem}.lg\:me-auto{margin-inline-end:auto}.lg\:mb-0{margin-block-end:0}.lg\:mb-1{margin-block-end:.25rem}.lg\:mb-2{margin-block-end:.5rem}.lg\:mb-3{margin-block-end:.75rem}.lg\:mb-4{margin-block-end:1rem}.lg\:mb-5{margin-block-end:1.25rem}.lg\:mb-6{margin-block-end:1.5rem}.lg\:mb-7{margin-block-end:2rem}.lg\:mb-8{margin-block-end:2.5rem}.lg\:mb-9{margin-block-end:3rem}.lg\:mb-auto{margin-block-end:auto}.lg\:ms-0{margin-inline-start:0}.lg\:ms-1{margin-inline-start:.25rem}.lg\:ms-2{margin-inline-start:.5rem}.lg\:ms-3{margin-inline-start:.75rem}.lg\:ms-4{margin-inline-start:1rem}.lg\:ms-5{margin-inline-start:1.25rem}.lg\:ms-6{margin-inline-start:1.5rem}.lg\:ms-7{margin-inline-start:2rem}.lg\:ms-8{margin-inline-start:2.5rem}.lg\:ms-9{margin-inline-start:3rem}.lg\:ms--1{margin-inline-start:-.25rem}.lg\:ms--2{margin-inline-start:-.5rem}.lg\:ms-auto{margin-inline-start:auto}.lg\:p-0{padding:0}.lg\:p-1{padding:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-3{padding:.75rem}.lg\:p-4{padding:1rem}.lg\:p-5{padding:1.25rem}.lg\:p-6{padding:1.5rem}.lg\:p-7{padding:2rem}.lg\:p-8{padding:2.5rem}.lg\:p-9{padding:3rem}.lg\:px-0{padding-inline:0}.lg\:px-1{padding-inline:.25rem}.lg\:px-2{padding-inline:.5rem}.lg\:px-3{padding-inline:.75rem}.lg\:px-4{padding-inline:1rem}.lg\:px-5{padding-inline:1.25rem}.lg\:px-6{padding-inline:1.5rem}.lg\:px-7{padding-inline:2rem}.lg\:px-8{padding-inline:2.5rem}.lg\:px-9{padding-inline:3rem}.lg\:py-0{padding-block:0}.lg\:py-1{padding-block:.25rem}.lg\:py-2{padding-block:.5rem}.lg\:py-3{padding-block:.75rem}.lg\:py-4{padding-block:1rem}.lg\:py-5{padding-block:1.25rem}.lg\:py-6{padding-block:1.5rem}.lg\:py-7{padding-block:2rem}.lg\:py-8{padding-block:2.5rem}.lg\:py-9{padding-block:3rem}.lg\:pt-0{padding-block-start:0}.lg\:pt-1{padding-block-start:.25rem}.lg\:pt-2{padding-block-start:.5rem}.lg\:pt-3{padding-block-start:.75rem}.lg\:pt-4{padding-block-start:1rem}.lg\:pt-5{padding-block-start:1.25rem}.lg\:pt-6{padding-block-start:1.5rem}.lg\:pt-7{padding-block-start:2rem}.lg\:pt-8{padding-block-start:2.5rem}.lg\:pt-9{padding-block-start:3rem}.lg\:pe-0{padding-inline-end:0}.lg\:pe-1{padding-inline-end:.25rem}.lg\:pe-2{padding-inline-end:.5rem}.lg\:pe-3{padding-inline-end:.75rem}.lg\:pe-4{padding-inline-end:1rem}.lg\:pe-5{padding-inline-end:1.25rem}.lg\:pe-6{padding-inline-end:1.5rem}.lg\:pe-7{padding-inline-end:2rem}.lg\:pe-8{padding-inline-end:2.5rem}.lg\:pe-9{padding-inline-end:3rem}.lg\:pb-0{padding-block-end:0}.lg\:pb-1{padding-block-end:.25rem}.lg\:pb-2{padding-block-end:.5rem}.lg\:pb-3{padding-block-end:.75rem}.lg\:pb-4{padding-block-end:1rem}.lg\:pb-5{padding-block-end:1.25rem}.lg\:pb-6{padding-block-end:1.5rem}.lg\:pb-7{padding-block-end:2rem}.lg\:pb-8{padding-block-end:2.5rem}.lg\:pb-9{padding-block-end:3rem}.lg\:ps-0{padding-inline-start:0}.lg\:ps-1{padding-inline-start:.25rem}.lg\:ps-2{padding-inline-start:.5rem}.lg\:ps-3{padding-inline-start:.75rem}.lg\:ps-4{padding-inline-start:1rem}.lg\:ps-5{padding-inline-start:1.25rem}.lg\:ps-6{padding-inline-start:1.5rem}.lg\:ps-7{padding-inline-start:2rem}.lg\:ps-8{padding-inline-start:2.5rem}.lg\:ps-9{padding-inline-start:3rem}.lg\:gap-0{gap:0}.lg\:gap-1{gap:.25rem}.lg\:gap-2{gap:.5rem}.lg\:gap-3{gap:.75rem}.lg\:gap-4{gap:1rem}.lg\:gap-5{gap:1.25rem}.lg\:gap-6{gap:1.5rem}.lg\:gap-7{gap:2rem}.lg\:gap-8{gap:2.5rem}.lg\:gap-9{gap:3rem}.lg\:row-gap-0{row-gap:0}.lg\:row-gap-1{row-gap:.25rem}.lg\:row-gap-2{row-gap:.5rem}.lg\:row-gap-3{row-gap:.75rem}.lg\:row-gap-4{row-gap:1rem}.lg\:row-gap-5{row-gap:1.25rem}.lg\:row-gap-6{row-gap:1.5rem}.lg\:row-gap-7{row-gap:2rem}.lg\:row-gap-8{row-gap:2.5rem}.lg\:row-gap-9{row-gap:3rem}.lg\:column-gap-0{column-gap:0}.lg\:column-gap-1{column-gap:.25rem}.lg\:column-gap-2{column-gap:.5rem}.lg\:column-gap-3{column-gap:.75rem}.lg\:column-gap-4{column-gap:1rem}.lg\:column-gap-5{column-gap:1.25rem}.lg\:column-gap-6{column-gap:1.5rem}.lg\:column-gap-7{column-gap:2rem}.lg\:column-gap-8{column-gap:2.5rem}.lg\:column-gap-9{column-gap:3rem}:where(.lg\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.lg\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.lg\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.lg\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.lg\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.lg\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.lg\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.lg\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.lg\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.lg\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.lg\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.lg\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.lg\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.lg\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.lg\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.lg\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.lg\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.lg\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.lg\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.lg\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.lg\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.lg\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-y-0>:not(:first-child)){border-block-start:0}.lg\:text-start{text-align:start}.lg\:text-end{text-align:end}.lg\:text-center{text-align:center}}@media (width>=1280px){.xl\:float-start{float:inline-start}.xl\:float-end{float:inline-end}.xl\:float-none{float:none}.xl\:object-fit-contain{object-fit:contain}.xl\:object-fit-cover{object-fit:cover}.xl\:object-fit-fill{object-fit:fill}.xl\:object-fit-scale{object-fit:scale-down}.xl\:object-fit-none{object-fit:none}.xl\:d-inline{display:inline}.xl\:d-inline-block{display:inline-block}.xl\:d-block{display:block}.xl\:d-grid{display:grid}.xl\:d-inline-grid{display:inline-grid}.xl\:d-table{display:table}.xl\:d-table-row{display:table-row}.xl\:d-table-cell{display:table-cell}.xl\:d-flex{display:flex}.xl\:d-inline-flex{display:inline-flex}.xl\:d-contents{display:contents}.xl\:d-flow-root{display:flow-root}.xl\:d-none{display:none}.xl\:flex-fill{flex:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-column{flex-direction:column}.xl\:flex-row-reverse{flex-direction:row-reverse}.xl\:flex-column-reverse{flex-direction:column-reverse}.xl\:flex-grow-0{flex-grow:0}.xl\:flex-grow-1{flex-grow:1}.xl\:flex-shrink-0{flex-shrink:0}.xl\:flex-shrink-1{flex-shrink:1}.xl\:flex-wrap{flex-wrap:wrap}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.xl\:justify-content-start{justify-content:flex-start}.xl\:justify-content-end{justify-content:flex-end}.xl\:justify-content-center{justify-content:center}.xl\:justify-content-between{justify-content:space-between}.xl\:justify-content-around{justify-content:space-around}.xl\:justify-content-evenly{justify-content:space-evenly}.xl\:justify-items-start{justify-items:start}.xl\:justify-items-end{justify-items:end}.xl\:justify-items-center{justify-items:center}.xl\:justify-items-stretch{justify-items:stretch}.xl\:justify-self-start{justify-self:start}.xl\:justify-self-end{justify-self:end}.xl\:justify-self-center{justify-self:center}.xl\:align-items-start{align-items:flex-start}.xl\:align-items-end{align-items:flex-end}.xl\:align-items-center{align-items:center}.xl\:align-items-baseline{align-items:baseline}.xl\:align-items-stretch{align-items:stretch}.xl\:align-content-start{align-content:flex-start}.xl\:align-content-end{align-content:flex-end}.xl\:align-content-center{align-content:center}.xl\:align-content-between{align-content:space-between}.xl\:align-content-around{align-content:space-around}.xl\:align-content-stretch{align-content:stretch}.xl\:align-self-auto{align-self:auto}.xl\:align-self-start{align-self:flex-start}.xl\:align-self-end{align-self:flex-end}.xl\:align-self-center{align-self:center}.xl\:align-self-baseline{align-self:baseline}.xl\:align-self-stretch{align-self:stretch}.xl\:place-items-start{place-items:start}.xl\:place-items-end{place-items:end}.xl\:place-items-center{place-items:center}.xl\:place-items-stretch{place-items:stretch stretch}.xl\:grid-cols-1{grid-template-columns:1fr}.xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.xl\:grid-cols-fill{grid-column:1/-1}.xl\:grid-auto-flow-row{grid-auto-flow:row}.xl\:grid-auto-flow-column{grid-auto-flow:column}.xl\:grid-auto-flow-dense{grid-auto-flow:dense}.xl\:order-first{order:-1}.xl\:order-0{order:0}.xl\:order-1{order:1}.xl\:order-2{order:2}.xl\:order-3{order:3}.xl\:order-4{order:4}.xl\:order-5{order:5}.xl\:order-last{order:6}.xl\:m-0{margin:0}.xl\:m-1{margin:.25rem}.xl\:m-2{margin:.5rem}.xl\:m-3{margin:.75rem}.xl\:m-4{margin:1rem}.xl\:m-5{margin:1.25rem}.xl\:m-6{margin:1.5rem}.xl\:m-7{margin:2rem}.xl\:m-8{margin:2.5rem}.xl\:m-9{margin:3rem}.xl\:m-auto{margin:auto}.xl\:mx-0{margin-inline:0}.xl\:mx-1{margin-inline:.25rem}.xl\:mx-2{margin-inline:.5rem}.xl\:mx-3{margin-inline:.75rem}.xl\:mx-4{margin-inline:1rem}.xl\:mx-5{margin-inline:1.25rem}.xl\:mx-6{margin-inline:1.5rem}.xl\:mx-7{margin-inline:2rem}.xl\:mx-8{margin-inline:2.5rem}.xl\:mx-9{margin-inline:3rem}.xl\:mx-auto{margin-inline:auto}.xl\:my-0{margin-block:0}.xl\:my-1{margin-block:.25rem}.xl\:my-2{margin-block:.5rem}.xl\:my-3{margin-block:.75rem}.xl\:my-4{margin-block:1rem}.xl\:my-5{margin-block:1.25rem}.xl\:my-6{margin-block:1.5rem}.xl\:my-7{margin-block:2rem}.xl\:my-8{margin-block:2.5rem}.xl\:my-9{margin-block:3rem}.xl\:my-auto{margin-block:auto}.xl\:mt-0{margin-block-start:0}.xl\:mt-1{margin-block-start:.25rem}.xl\:mt-2{margin-block-start:.5rem}.xl\:mt-3{margin-block-start:.75rem}.xl\:mt-4{margin-block-start:1rem}.xl\:mt-5{margin-block-start:1.25rem}.xl\:mt-6{margin-block-start:1.5rem}.xl\:mt-7{margin-block-start:2rem}.xl\:mt-8{margin-block-start:2.5rem}.xl\:mt-9{margin-block-start:3rem}.xl\:mt-auto{margin-block-start:auto}.xl\:me-0{margin-inline-end:0}.xl\:me-1{margin-inline-end:.25rem}.xl\:me-2{margin-inline-end:.5rem}.xl\:me-3{margin-inline-end:.75rem}.xl\:me-4{margin-inline-end:1rem}.xl\:me-5{margin-inline-end:1.25rem}.xl\:me-6{margin-inline-end:1.5rem}.xl\:me-7{margin-inline-end:2rem}.xl\:me-8{margin-inline-end:2.5rem}.xl\:me-9{margin-inline-end:3rem}.xl\:me--1{margin-inline-end:-.25rem}.xl\:me--2{margin-inline-end:-.5rem}.xl\:me-auto{margin-inline-end:auto}.xl\:mb-0{margin-block-end:0}.xl\:mb-1{margin-block-end:.25rem}.xl\:mb-2{margin-block-end:.5rem}.xl\:mb-3{margin-block-end:.75rem}.xl\:mb-4{margin-block-end:1rem}.xl\:mb-5{margin-block-end:1.25rem}.xl\:mb-6{margin-block-end:1.5rem}.xl\:mb-7{margin-block-end:2rem}.xl\:mb-8{margin-block-end:2.5rem}.xl\:mb-9{margin-block-end:3rem}.xl\:mb-auto{margin-block-end:auto}.xl\:ms-0{margin-inline-start:0}.xl\:ms-1{margin-inline-start:.25rem}.xl\:ms-2{margin-inline-start:.5rem}.xl\:ms-3{margin-inline-start:.75rem}.xl\:ms-4{margin-inline-start:1rem}.xl\:ms-5{margin-inline-start:1.25rem}.xl\:ms-6{margin-inline-start:1.5rem}.xl\:ms-7{margin-inline-start:2rem}.xl\:ms-8{margin-inline-start:2.5rem}.xl\:ms-9{margin-inline-start:3rem}.xl\:ms--1{margin-inline-start:-.25rem}.xl\:ms--2{margin-inline-start:-.5rem}.xl\:ms-auto{margin-inline-start:auto}.xl\:p-0{padding:0}.xl\:p-1{padding:.25rem}.xl\:p-2{padding:.5rem}.xl\:p-3{padding:.75rem}.xl\:p-4{padding:1rem}.xl\:p-5{padding:1.25rem}.xl\:p-6{padding:1.5rem}.xl\:p-7{padding:2rem}.xl\:p-8{padding:2.5rem}.xl\:p-9{padding:3rem}.xl\:px-0{padding-inline:0}.xl\:px-1{padding-inline:.25rem}.xl\:px-2{padding-inline:.5rem}.xl\:px-3{padding-inline:.75rem}.xl\:px-4{padding-inline:1rem}.xl\:px-5{padding-inline:1.25rem}.xl\:px-6{padding-inline:1.5rem}.xl\:px-7{padding-inline:2rem}.xl\:px-8{padding-inline:2.5rem}.xl\:px-9{padding-inline:3rem}.xl\:py-0{padding-block:0}.xl\:py-1{padding-block:.25rem}.xl\:py-2{padding-block:.5rem}.xl\:py-3{padding-block:.75rem}.xl\:py-4{padding-block:1rem}.xl\:py-5{padding-block:1.25rem}.xl\:py-6{padding-block:1.5rem}.xl\:py-7{padding-block:2rem}.xl\:py-8{padding-block:2.5rem}.xl\:py-9{padding-block:3rem}.xl\:pt-0{padding-block-start:0}.xl\:pt-1{padding-block-start:.25rem}.xl\:pt-2{padding-block-start:.5rem}.xl\:pt-3{padding-block-start:.75rem}.xl\:pt-4{padding-block-start:1rem}.xl\:pt-5{padding-block-start:1.25rem}.xl\:pt-6{padding-block-start:1.5rem}.xl\:pt-7{padding-block-start:2rem}.xl\:pt-8{padding-block-start:2.5rem}.xl\:pt-9{padding-block-start:3rem}.xl\:pe-0{padding-inline-end:0}.xl\:pe-1{padding-inline-end:.25rem}.xl\:pe-2{padding-inline-end:.5rem}.xl\:pe-3{padding-inline-end:.75rem}.xl\:pe-4{padding-inline-end:1rem}.xl\:pe-5{padding-inline-end:1.25rem}.xl\:pe-6{padding-inline-end:1.5rem}.xl\:pe-7{padding-inline-end:2rem}.xl\:pe-8{padding-inline-end:2.5rem}.xl\:pe-9{padding-inline-end:3rem}.xl\:pb-0{padding-block-end:0}.xl\:pb-1{padding-block-end:.25rem}.xl\:pb-2{padding-block-end:.5rem}.xl\:pb-3{padding-block-end:.75rem}.xl\:pb-4{padding-block-end:1rem}.xl\:pb-5{padding-block-end:1.25rem}.xl\:pb-6{padding-block-end:1.5rem}.xl\:pb-7{padding-block-end:2rem}.xl\:pb-8{padding-block-end:2.5rem}.xl\:pb-9{padding-block-end:3rem}.xl\:ps-0{padding-inline-start:0}.xl\:ps-1{padding-inline-start:.25rem}.xl\:ps-2{padding-inline-start:.5rem}.xl\:ps-3{padding-inline-start:.75rem}.xl\:ps-4{padding-inline-start:1rem}.xl\:ps-5{padding-inline-start:1.25rem}.xl\:ps-6{padding-inline-start:1.5rem}.xl\:ps-7{padding-inline-start:2rem}.xl\:ps-8{padding-inline-start:2.5rem}.xl\:ps-9{padding-inline-start:3rem}.xl\:gap-0{gap:0}.xl\:gap-1{gap:.25rem}.xl\:gap-2{gap:.5rem}.xl\:gap-3{gap:.75rem}.xl\:gap-4{gap:1rem}.xl\:gap-5{gap:1.25rem}.xl\:gap-6{gap:1.5rem}.xl\:gap-7{gap:2rem}.xl\:gap-8{gap:2.5rem}.xl\:gap-9{gap:3rem}.xl\:row-gap-0{row-gap:0}.xl\:row-gap-1{row-gap:.25rem}.xl\:row-gap-2{row-gap:.5rem}.xl\:row-gap-3{row-gap:.75rem}.xl\:row-gap-4{row-gap:1rem}.xl\:row-gap-5{row-gap:1.25rem}.xl\:row-gap-6{row-gap:1.5rem}.xl\:row-gap-7{row-gap:2rem}.xl\:row-gap-8{row-gap:2.5rem}.xl\:row-gap-9{row-gap:3rem}.xl\:column-gap-0{column-gap:0}.xl\:column-gap-1{column-gap:.25rem}.xl\:column-gap-2{column-gap:.5rem}.xl\:column-gap-3{column-gap:.75rem}.xl\:column-gap-4{column-gap:1rem}.xl\:column-gap-5{column-gap:1.25rem}.xl\:column-gap-6{column-gap:1.5rem}.xl\:column-gap-7{column-gap:2rem}.xl\:column-gap-8{column-gap:2.5rem}.xl\:column-gap-9{column-gap:3rem}:where(.xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-y-0>:not(:first-child)){border-block-start:0}.xl\:text-start{text-align:start}.xl\:text-end{text-align:end}.xl\:text-center{text-align:center}}@media (width>=1536px){.\32 xl\:float-start{float:inline-start}.\32 xl\:float-end{float:inline-end}.\32 xl\:float-none{float:none}.\32 xl\:object-fit-contain{object-fit:contain}.\32 xl\:object-fit-cover{object-fit:cover}.\32 xl\:object-fit-fill{object-fit:fill}.\32 xl\:object-fit-scale{object-fit:scale-down}.\32 xl\:object-fit-none{object-fit:none}.\32 xl\:d-inline{display:inline}.\32 xl\:d-inline-block{display:inline-block}.\32 xl\:d-block{display:block}.\32 xl\:d-grid{display:grid}.\32 xl\:d-inline-grid{display:inline-grid}.\32 xl\:d-table{display:table}.\32 xl\:d-table-row{display:table-row}.\32 xl\:d-table-cell{display:table-cell}.\32 xl\:d-flex{display:flex}.\32 xl\:d-inline-flex{display:inline-flex}.\32 xl\:d-contents{display:contents}.\32 xl\:d-flow-root{display:flow-root}.\32 xl\:d-none{display:none}.\32 xl\:flex-fill{flex:auto}.\32 xl\:flex-row{flex-direction:row}.\32 xl\:flex-column{flex-direction:column}.\32 xl\:flex-row-reverse{flex-direction:row-reverse}.\32 xl\:flex-column-reverse{flex-direction:column-reverse}.\32 xl\:flex-grow-0{flex-grow:0}.\32 xl\:flex-grow-1{flex-grow:1}.\32 xl\:flex-shrink-0{flex-shrink:0}.\32 xl\:flex-shrink-1{flex-shrink:1}.\32 xl\:flex-wrap{flex-wrap:wrap}.\32 xl\:flex-nowrap{flex-wrap:nowrap}.\32 xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.\32 xl\:justify-content-start{justify-content:flex-start}.\32 xl\:justify-content-end{justify-content:flex-end}.\32 xl\:justify-content-center{justify-content:center}.\32 xl\:justify-content-between{justify-content:space-between}.\32 xl\:justify-content-around{justify-content:space-around}.\32 xl\:justify-content-evenly{justify-content:space-evenly}.\32 xl\:justify-items-start{justify-items:start}.\32 xl\:justify-items-end{justify-items:end}.\32 xl\:justify-items-center{justify-items:center}.\32 xl\:justify-items-stretch{justify-items:stretch}.\32 xl\:justify-self-start{justify-self:start}.\32 xl\:justify-self-end{justify-self:end}.\32 xl\:justify-self-center{justify-self:center}.\32 xl\:align-items-start{align-items:flex-start}.\32 xl\:align-items-end{align-items:flex-end}.\32 xl\:align-items-center{align-items:center}.\32 xl\:align-items-baseline{align-items:baseline}.\32 xl\:align-items-stretch{align-items:stretch}.\32 xl\:align-content-start{align-content:flex-start}.\32 xl\:align-content-end{align-content:flex-end}.\32 xl\:align-content-center{align-content:center}.\32 xl\:align-content-between{align-content:space-between}.\32 xl\:align-content-around{align-content:space-around}.\32 xl\:align-content-stretch{align-content:stretch}.\32 xl\:align-self-auto{align-self:auto}.\32 xl\:align-self-start{align-self:flex-start}.\32 xl\:align-self-end{align-self:flex-end}.\32 xl\:align-self-center{align-self:center}.\32 xl\:align-self-baseline{align-self:baseline}.\32 xl\:align-self-stretch{align-self:stretch}.\32 xl\:place-items-start{place-items:start}.\32 xl\:place-items-end{place-items:end}.\32 xl\:place-items-center{place-items:center}.\32 xl\:place-items-stretch{place-items:stretch stretch}.\32 xl\:grid-cols-1{grid-template-columns:1fr}.\32 xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.\32 xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.\32 xl\:grid-cols-fill{grid-column:1/-1}.\32 xl\:grid-auto-flow-row{grid-auto-flow:row}.\32 xl\:grid-auto-flow-column{grid-auto-flow:column}.\32 xl\:grid-auto-flow-dense{grid-auto-flow:dense}.\32 xl\:order-first{order:-1}.\32 xl\:order-0{order:0}.\32 xl\:order-1{order:1}.\32 xl\:order-2{order:2}.\32 xl\:order-3{order:3}.\32 xl\:order-4{order:4}.\32 xl\:order-5{order:5}.\32 xl\:order-last{order:6}.\32 xl\:m-0{margin:0}.\32 xl\:m-1{margin:.25rem}.\32 xl\:m-2{margin:.5rem}.\32 xl\:m-3{margin:.75rem}.\32 xl\:m-4{margin:1rem}.\32 xl\:m-5{margin:1.25rem}.\32 xl\:m-6{margin:1.5rem}.\32 xl\:m-7{margin:2rem}.\32 xl\:m-8{margin:2.5rem}.\32 xl\:m-9{margin:3rem}.\32 xl\:m-auto{margin:auto}.\32 xl\:mx-0{margin-inline:0}.\32 xl\:mx-1{margin-inline:.25rem}.\32 xl\:mx-2{margin-inline:.5rem}.\32 xl\:mx-3{margin-inline:.75rem}.\32 xl\:mx-4{margin-inline:1rem}.\32 xl\:mx-5{margin-inline:1.25rem}.\32 xl\:mx-6{margin-inline:1.5rem}.\32 xl\:mx-7{margin-inline:2rem}.\32 xl\:mx-8{margin-inline:2.5rem}.\32 xl\:mx-9{margin-inline:3rem}.\32 xl\:mx-auto{margin-inline:auto}.\32 xl\:my-0{margin-block:0}.\32 xl\:my-1{margin-block:.25rem}.\32 xl\:my-2{margin-block:.5rem}.\32 xl\:my-3{margin-block:.75rem}.\32 xl\:my-4{margin-block:1rem}.\32 xl\:my-5{margin-block:1.25rem}.\32 xl\:my-6{margin-block:1.5rem}.\32 xl\:my-7{margin-block:2rem}.\32 xl\:my-8{margin-block:2.5rem}.\32 xl\:my-9{margin-block:3rem}.\32 xl\:my-auto{margin-block:auto}.\32 xl\:mt-0{margin-block-start:0}.\32 xl\:mt-1{margin-block-start:.25rem}.\32 xl\:mt-2{margin-block-start:.5rem}.\32 xl\:mt-3{margin-block-start:.75rem}.\32 xl\:mt-4{margin-block-start:1rem}.\32 xl\:mt-5{margin-block-start:1.25rem}.\32 xl\:mt-6{margin-block-start:1.5rem}.\32 xl\:mt-7{margin-block-start:2rem}.\32 xl\:mt-8{margin-block-start:2.5rem}.\32 xl\:mt-9{margin-block-start:3rem}.\32 xl\:mt-auto{margin-block-start:auto}.\32 xl\:me-0{margin-inline-end:0}.\32 xl\:me-1{margin-inline-end:.25rem}.\32 xl\:me-2{margin-inline-end:.5rem}.\32 xl\:me-3{margin-inline-end:.75rem}.\32 xl\:me-4{margin-inline-end:1rem}.\32 xl\:me-5{margin-inline-end:1.25rem}.\32 xl\:me-6{margin-inline-end:1.5rem}.\32 xl\:me-7{margin-inline-end:2rem}.\32 xl\:me-8{margin-inline-end:2.5rem}.\32 xl\:me-9{margin-inline-end:3rem}.\32 xl\:me--1{margin-inline-end:-.25rem}.\32 xl\:me--2{margin-inline-end:-.5rem}.\32 xl\:me-auto{margin-inline-end:auto}.\32 xl\:mb-0{margin-block-end:0}.\32 xl\:mb-1{margin-block-end:.25rem}.\32 xl\:mb-2{margin-block-end:.5rem}.\32 xl\:mb-3{margin-block-end:.75rem}.\32 xl\:mb-4{margin-block-end:1rem}.\32 xl\:mb-5{margin-block-end:1.25rem}.\32 xl\:mb-6{margin-block-end:1.5rem}.\32 xl\:mb-7{margin-block-end:2rem}.\32 xl\:mb-8{margin-block-end:2.5rem}.\32 xl\:mb-9{margin-block-end:3rem}.\32 xl\:mb-auto{margin-block-end:auto}.\32 xl\:ms-0{margin-inline-start:0}.\32 xl\:ms-1{margin-inline-start:.25rem}.\32 xl\:ms-2{margin-inline-start:.5rem}.\32 xl\:ms-3{margin-inline-start:.75rem}.\32 xl\:ms-4{margin-inline-start:1rem}.\32 xl\:ms-5{margin-inline-start:1.25rem}.\32 xl\:ms-6{margin-inline-start:1.5rem}.\32 xl\:ms-7{margin-inline-start:2rem}.\32 xl\:ms-8{margin-inline-start:2.5rem}.\32 xl\:ms-9{margin-inline-start:3rem}.\32 xl\:ms--1{margin-inline-start:-.25rem}.\32 xl\:ms--2{margin-inline-start:-.5rem}.\32 xl\:ms-auto{margin-inline-start:auto}.\32 xl\:p-0{padding:0}.\32 xl\:p-1{padding:.25rem}.\32 xl\:p-2{padding:.5rem}.\32 xl\:p-3{padding:.75rem}.\32 xl\:p-4{padding:1rem}.\32 xl\:p-5{padding:1.25rem}.\32 xl\:p-6{padding:1.5rem}.\32 xl\:p-7{padding:2rem}.\32 xl\:p-8{padding:2.5rem}.\32 xl\:p-9{padding:3rem}.\32 xl\:px-0{padding-inline:0}.\32 xl\:px-1{padding-inline:.25rem}.\32 xl\:px-2{padding-inline:.5rem}.\32 xl\:px-3{padding-inline:.75rem}.\32 xl\:px-4{padding-inline:1rem}.\32 xl\:px-5{padding-inline:1.25rem}.\32 xl\:px-6{padding-inline:1.5rem}.\32 xl\:px-7{padding-inline:2rem}.\32 xl\:px-8{padding-inline:2.5rem}.\32 xl\:px-9{padding-inline:3rem}.\32 xl\:py-0{padding-block:0}.\32 xl\:py-1{padding-block:.25rem}.\32 xl\:py-2{padding-block:.5rem}.\32 xl\:py-3{padding-block:.75rem}.\32 xl\:py-4{padding-block:1rem}.\32 xl\:py-5{padding-block:1.25rem}.\32 xl\:py-6{padding-block:1.5rem}.\32 xl\:py-7{padding-block:2rem}.\32 xl\:py-8{padding-block:2.5rem}.\32 xl\:py-9{padding-block:3rem}.\32 xl\:pt-0{padding-block-start:0}.\32 xl\:pt-1{padding-block-start:.25rem}.\32 xl\:pt-2{padding-block-start:.5rem}.\32 xl\:pt-3{padding-block-start:.75rem}.\32 xl\:pt-4{padding-block-start:1rem}.\32 xl\:pt-5{padding-block-start:1.25rem}.\32 xl\:pt-6{padding-block-start:1.5rem}.\32 xl\:pt-7{padding-block-start:2rem}.\32 xl\:pt-8{padding-block-start:2.5rem}.\32 xl\:pt-9{padding-block-start:3rem}.\32 xl\:pe-0{padding-inline-end:0}.\32 xl\:pe-1{padding-inline-end:.25rem}.\32 xl\:pe-2{padding-inline-end:.5rem}.\32 xl\:pe-3{padding-inline-end:.75rem}.\32 xl\:pe-4{padding-inline-end:1rem}.\32 xl\:pe-5{padding-inline-end:1.25rem}.\32 xl\:pe-6{padding-inline-end:1.5rem}.\32 xl\:pe-7{padding-inline-end:2rem}.\32 xl\:pe-8{padding-inline-end:2.5rem}.\32 xl\:pe-9{padding-inline-end:3rem}.\32 xl\:pb-0{padding-block-end:0}.\32 xl\:pb-1{padding-block-end:.25rem}.\32 xl\:pb-2{padding-block-end:.5rem}.\32 xl\:pb-3{padding-block-end:.75rem}.\32 xl\:pb-4{padding-block-end:1rem}.\32 xl\:pb-5{padding-block-end:1.25rem}.\32 xl\:pb-6{padding-block-end:1.5rem}.\32 xl\:pb-7{padding-block-end:2rem}.\32 xl\:pb-8{padding-block-end:2.5rem}.\32 xl\:pb-9{padding-block-end:3rem}.\32 xl\:ps-0{padding-inline-start:0}.\32 xl\:ps-1{padding-inline-start:.25rem}.\32 xl\:ps-2{padding-inline-start:.5rem}.\32 xl\:ps-3{padding-inline-start:.75rem}.\32 xl\:ps-4{padding-inline-start:1rem}.\32 xl\:ps-5{padding-inline-start:1.25rem}.\32 xl\:ps-6{padding-inline-start:1.5rem}.\32 xl\:ps-7{padding-inline-start:2rem}.\32 xl\:ps-8{padding-inline-start:2.5rem}.\32 xl\:ps-9{padding-inline-start:3rem}.\32 xl\:gap-0{gap:0}.\32 xl\:gap-1{gap:.25rem}.\32 xl\:gap-2{gap:.5rem}.\32 xl\:gap-3{gap:.75rem}.\32 xl\:gap-4{gap:1rem}.\32 xl\:gap-5{gap:1.25rem}.\32 xl\:gap-6{gap:1.5rem}.\32 xl\:gap-7{gap:2rem}.\32 xl\:gap-8{gap:2.5rem}.\32 xl\:gap-9{gap:3rem}.\32 xl\:row-gap-0{row-gap:0}.\32 xl\:row-gap-1{row-gap:.25rem}.\32 xl\:row-gap-2{row-gap:.5rem}.\32 xl\:row-gap-3{row-gap:.75rem}.\32 xl\:row-gap-4{row-gap:1rem}.\32 xl\:row-gap-5{row-gap:1.25rem}.\32 xl\:row-gap-6{row-gap:1.5rem}.\32 xl\:row-gap-7{row-gap:2rem}.\32 xl\:row-gap-8{row-gap:2.5rem}.\32 xl\:row-gap-9{row-gap:3rem}.\32 xl\:column-gap-0{column-gap:0}.\32 xl\:column-gap-1{column-gap:.25rem}.\32 xl\:column-gap-2{column-gap:.5rem}.\32 xl\:column-gap-3{column-gap:.75rem}.\32 xl\:column-gap-4{column-gap:1rem}.\32 xl\:column-gap-5{column-gap:1.25rem}.\32 xl\:column-gap-6{column-gap:1.5rem}.\32 xl\:column-gap-7{column-gap:2rem}.\32 xl\:column-gap-8{column-gap:2.5rem}.\32 xl\:column-gap-9{column-gap:3rem}:where(.\32 xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.\32 xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.\32 xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.\32 xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.\32 xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.\32 xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.\32 xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.\32 xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.\32 xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.\32 xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.\32 xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.\32 xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.\32 xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.\32 xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.\32 xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.\32 xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.\32 xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.\32 xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.\32 xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.\32 xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.\32 xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.\32 xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-y-0>:not(:first-child)){border-block-start:0}.\32 xl\:text-start{text-align:start}.\32 xl\:text-end{text-align:end}.\32 xl\:text-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-fg));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch, var(--bs-link-color) 90%, #000);--bs-font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Mono", Consolas, "Liberation Mono", 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(var(--bs-gray-200),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch, var(--bs-fg-body) 15%, transparent);--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-radius-5);--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-radius-5);--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-radius-5);--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-radius-7);--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-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-fg-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-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));--bs-accent-fg-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-fg:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-fg-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-fg:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-fg-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-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-fg-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-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-fg-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-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-fg-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-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-fg-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-fg:var(--bs-fg-body);--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-bg:var(--bs-bg-body);--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(color-mix(in oklch, var(--bs-gray-100), var(--bs-gray-200)),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;--bs-spacer-0:0;--bs-spacer-1:.25rem;--bs-spacer-2:.5rem;--bs-spacer-3:.75rem;--bs-spacer-4:1rem;--bs-spacer-5:1.25rem;--bs-spacer-6:1.5rem;--bs-spacer-7:2rem;--bs-spacer-8:2.5rem;--bs-spacer-9:3rem;--bs-radius-0:0;--bs-radius-1:.125rem;--bs-radius-2:.1875rem;--bs-radius-3:.25rem;--bs-radius-4:.375rem;--bs-radius-5:.5rem;--bs-radius-6:.625rem;--bs-radius-7:.75rem;--bs-radius-8:1rem;--bs-radius-9:1.5rem;--bs-radius-pill:50rem;color-scheme:light dark;scrollbar-gutter:stable}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}@keyframes otp-caret-blink{0%,to{opacity:1}50%{opacity:0}}.drawer,.\32 xl\:drawer,.xl\:drawer,.lg\:drawer,.md\:drawer,.sm\:drawer{--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5}.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 1c9d7f4a9647096ac00d7c1d322ef90496c7b404..06c25d947ab3d05c690e9fc5ab1827a794639b36 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/_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/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.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/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.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/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.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-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-7);\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-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-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-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-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-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-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-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-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-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-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-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-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-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-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-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-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-fg: var(--fg-body);\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-bg: var(--bg-body);\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\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  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: transparent;\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: var(--spacer-2);\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-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [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(--radius-5);\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  [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], [type=datetime-local], [type=month], [type=week], [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  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-meridiem-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  ::-webkit-outer-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: 5%;\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: 10%;\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: 7.5%;\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: var(--spacer);\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-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\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(--radius-5);\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-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\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], :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], :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], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :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, :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  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\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    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .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: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\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    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2);\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(--radius-5);\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='%23ffffff80' 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, [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    pointer-events: none;\n    background-color: var(--control-action-bg);\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, [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  .form-control-caret {\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  .form-control-caret[multiple],\n  .form-control-caret[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    .form-control-caret {\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, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\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  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\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    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n  }\n  .check:checked, .check: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:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\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: calc(var(--radio-size) * 0.25);\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-fg);\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-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\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-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\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    flex-shrink: 0;\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: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\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    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:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\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-fg);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\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: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\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:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range:focus-visible {\n    outline: 0;\n  }\n  .form-range:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\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    background-image: var(--gradient);\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    background-image: var(--gradient);\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    background-image: var(--gradient);\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    background-image: var(--gradient);\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    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(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\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 > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\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(--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(--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    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\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  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5);\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    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\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 forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.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    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .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    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\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  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\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  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-valid ~ .valid-feedback,\n  .form-range.is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-range:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range:user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-range:user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.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    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .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    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\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  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\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  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range.is-invalid ~ .invalid-feedback,\n  .form-range.is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-range:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range:user-invalid ~ .invalid-feedback,\n  [data-bs-validate] .form-range:user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\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(--radius-5);\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    background-image: none;\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-fg);\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-fg);\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-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\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-fg-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-fg-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-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) 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-fg) 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-fg);\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-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-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    background-image: none;\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    background-image: none;\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-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\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, :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, :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.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\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-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--radius-7));\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::-webkit-details-marker {\n    display: none;\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  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\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]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, 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: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, 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(--radius-5);\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 > p {\n    margin-bottom: 0;\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 > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\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 > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\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(--radius-7);\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-fg);\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-fg);\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(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\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(--radius-7);\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-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--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-fg, 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: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\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(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--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: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\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    border-radius: var(--card-border-radius);\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, :last-child),\n  .card-list:not(:first-child, :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-fg-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-fg-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, :last-child),\n  .card-row .card-list:not(:first-child, :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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\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    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\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(--radius-7);\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\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(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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    mask-repeat: no-repeat;\n    mask-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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\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(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\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-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\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    .sm-down\\: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  }\n  @media (width < 768px) {\n    .md-down\\: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  }\n  @media (width < 1024px) {\n    .lg-down\\: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  }\n  @media (width < 1280px) {\n    .xl-down\\: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  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\: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  }\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    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\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(--radius-5);\n    --menu-icon-size: 1rem;\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    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\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-fg, 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-fg-emphasis, 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    background-image: none;\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-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}\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(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\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-fg, 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-fg, 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-fg-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-fg-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    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\: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    .sm\\: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    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\: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    .sm\\: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  }\n  @media (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\: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    .md\\: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    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\: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    .md\\: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  }\n  @media (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\: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    .lg\\: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    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\: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    .lg\\: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  }\n  @media (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\: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    .xl\\: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    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\: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    .xl\\: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  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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  }\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(--radius-5);\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(--radius-5);\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-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\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    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\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-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 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(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\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 > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .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-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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 [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\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 [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\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    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\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.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-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(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-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    background-image: var(--gradient);\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%, rgb(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(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\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: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\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(--radius-5);\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@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\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-inline-start: 0;\n    list-style: none;\n    counter-reset: stepper;\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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-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  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\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: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\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@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.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(--radius-5);\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.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-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-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    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\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-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-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-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-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-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-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-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-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-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-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-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-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-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-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-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-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, :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, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :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  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\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  .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    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 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-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\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: start;\n  }\n  .justify-self-end {\n    justify-self: 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-1 {\n    grid-template-columns: 1fr;\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: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\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: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\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: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\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: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\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: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\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: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\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: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\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: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\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: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\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: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\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: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\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: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\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: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\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: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\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: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\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: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\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: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\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    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\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  .hover\\:link-10: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  .hover\\:link-20: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  .hover\\:link-30: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  .hover\\:link-40: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  .hover\\:link-50: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  .hover\\:link-60: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  .hover\\:link-70: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  .hover\\:link-80: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  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3: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  .hover\\:underline-10: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  .hover\\:underline-20: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  .hover\\:underline-30: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  .hover\\:underline-40: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  .hover\\:underline-50: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  .hover\\:underline-60: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  .hover\\:underline-70: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  .hover\\:underline-80: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  .hover\\:underline-90: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  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\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-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-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-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\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: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\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(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--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    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-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// 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-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(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-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(--radius-5),\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(--radius-5),\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(--radius-5),\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(--radius-7),\n    // scss-docs-end root-form-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// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\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 \"../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(--radius-5),\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: transparent; // 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-fg, 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-fg-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], [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  // 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\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [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  // 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-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\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  ::-webkit-outer-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:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !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-negative-margins:     false !default;\n$enable-deprecation-messages: 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 * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $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: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\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:      var(--spacer-2) !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-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  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(--radius-5), $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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\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: 5%,\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: 10%,\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: 7.5%,\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: var(--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-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\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// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\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, $prefix) {\n    @content($breakpoint, $next, $prefix);\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(--radius-5),\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-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\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: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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], :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], :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, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :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      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\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            .#{breakpoint-prefix($name, $breakpoints)}container {\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$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 ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$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        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$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          .#{$prefix}g-start-#{$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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2),\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/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(--radius-5),\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='#ffffff80' 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, [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      background-color: var(--control-action-bg);\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, [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  .form-control-caret {\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    .form-control-caret {\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, [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(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\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 \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" 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: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\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  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n\n    &:checked,\n    &: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/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\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: var(--bg-body),\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  .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: calc(var(--radio-size) * .25);\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-fg);\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    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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$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.75),\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-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\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    flex-shrink: 0;\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 rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\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      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\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-fg);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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/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: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\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    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\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: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\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 \"../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: rgb(255 255 255 / .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/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 \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" 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    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    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\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    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\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  }\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(--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/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\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    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\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    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // let clicks fall through to the input overlay\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\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  // OTP input sizing — keep in sync with `$form-control-sizes`.\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    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5),\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      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\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 \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-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: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — .form-range IS the <input>, so the mixin applies directly.\n  .form-range {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip { display: block; }\n    }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control: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  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\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(--radius-5),\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 rgb(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\": \"fg\",\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\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\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-fg, 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-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-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  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\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, :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, :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/mask-icon\" 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.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\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-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\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(--radius-7)),\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    &::-webkit-details-marker {\n      display: none;\n    }\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    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\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\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, 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: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, 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(--radius-5),\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 > p {\n    margin-bottom: 0;\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      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\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    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\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} > .avatar {\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      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" 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(--radius-7),\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\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\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/mask-icon\" 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(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\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(--radius-7),\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    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\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(--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-fg, 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: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\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(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--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: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .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, :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-fg-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-fg-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, :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            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\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            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\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/mask-icon\" 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(--radius-7),\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\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(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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>\"), $size: null);\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(--radius-5));\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(--radius-5));\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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/dialog-shared\" 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(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\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  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\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    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\: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    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(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    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\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 \"mixins/transition\" 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(--radius-7),\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(--radius-5),\n    --menu-icon-size: 1rem,\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    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\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(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\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-fg, 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-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\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      background-color: var(--theme-bg, var(--menu-item-active-bg));\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-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  // 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(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\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-fg, 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-fg, 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-fg-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-fg-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      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}list-group-horizontal {\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(--radius-5),\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-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\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(--radius-5));\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    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\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  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\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  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\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/mask-icon\" 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(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\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    background-color: var(--navbar-bg, var(--bg-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      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\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  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` 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    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\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, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\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/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  // Native ::backdrop for modal drawer.\n  // ::backdrop lives in the top layer outside the DOM tree, so it does NOT\n  // inherit custom properties from the element. Tokens must be applied directly.\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      @include tokens($drawer-backdrop-tokens);\n      @include tokens($drawer-tokens);\n      background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\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%, rgb(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(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\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: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\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","@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/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(--radius-5),\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 \"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-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-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  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\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}\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: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\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    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\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 \"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: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--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(--radius-5),\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@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","@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    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-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, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\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: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// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($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: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$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// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-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    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-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    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-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    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-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    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-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    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-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    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-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    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-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  \"fg\": var(--fg-body),\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  \"bg\": var(--bg-body),\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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, :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, :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 \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\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 target children via `child-selector`, wrapped in :where() for zero specificity\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 emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\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, $prefix: \"\") {\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, dark, important, state, variables, child-selector, enabled;\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  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` 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  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: 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        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\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    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
+{"version":3,"sourceRoot":null,"mappings":"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,yD2CqII,wDhDhBN,qBgDwBI,qDhDrCJ,sBgD9DA,sZ3C1CE,0D2C0CF,6BhD8DA,sBgDuEM,wCAIA,+IhD9DN,qBgD3EA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CpGF,yD2CoGE,kDhDiBJ,qBgDbM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CrIJ,yD2CqII,wDhDhBN,qBgDwBI,qDhDrCJ,sBgD9DA,sZ3C1CE,0D2C0CF,6BhD8DA,sBgDuEM,wCAIA,+IhD9DN,sBgD3EA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CpGF,0D2CoGE,kDhDiBJ,sBgDbM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CrIJ,0D2CqII,wDhDhBN,sBgDwBI,qDhDrCJ,uBgD9DA,sZ3C1CE,2D2C0CF,6BhD8DA,uBgDuEM,wCAIA,+IhD9DN,sBgD3EA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CpGF,0D2CoGE,kDhDiBJ,sBgDbM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CrIJ,0D2CqII,wDhDhBN,sBgDwBI,qDhDrCJ,uBgD9DA,sZ3C1CE,2D2C0CF,6BhD8DA,uBgDuEM,wCAIA,+IhD9DN,sBgD3EA,mhBA0BI,+IAMA,2IAMA,2HAKA,8HAKA,6HAUA,uL3CpGF,0D2CoGE,sDhDiBJ,sBgDbM,qHAGE,2LAQA,kIAKF,mHAIA,oLASA,0L3CrIJ,0D2CqII,4DhDhBN,sBgDwBI,yDhDrCJ,uBgD9DA,0Z3C1CE,2D2C0CF,iChD8DA,uBgDuEM,4CAIA,mJAzIN,2gBA0BI,uIAMA,mIAMA,mHAKA,sHAKA,qHAUA,8K3CpGF,uC2CoGE,8CAIE,6GAGE,2KAQA,0HAKF,2GAIA,oKASA,kK3CrIJ,uC2CqII,oDAAA,kDAQF,gDA2DJ,oqC3CxME,uC2CwMF,uCAAA,oqC3CxME,uC2CwMF,uCAAA,oqC3CxME,uC2CwMF,uCAAA,oqC3CxME,uC2CwMF,uCAAA,wqC3CxME,uC2CwMF,2CAAA,gqC3CxME,uC2CwMF,mCAWF,gBAEI,mLAQJ,qCAIA,uIAQA,qHAQA,2HAGE,uGAOF,6EAKA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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/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.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/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.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/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.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-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-7);\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-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-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-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-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-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-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-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-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-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-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-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-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-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-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-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-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-fg: var(--fg-body);\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-bg: var(--bg-body);\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\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  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: transparent;\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: var(--spacer-2);\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-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [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(--radius-5);\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  [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], [type=datetime-local], [type=month], [type=week], [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  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-meridiem-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  ::-webkit-outer-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-type: \"\";\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style-type: \"\";\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: 5%;\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: 10%;\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: 7.5%;\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: var(--spacer);\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-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\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(--radius-5);\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-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\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], :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], :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], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :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, :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  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\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    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .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: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\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    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2);\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(--radius-5);\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='%23ffffff80' 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, [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    pointer-events: none;\n    background-color: var(--control-action-bg);\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, [readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\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(--radius-5);\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='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\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  .form-control-caret {\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  .form-control-caret[multiple],\n  .form-control-caret[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  [data-bs-theme=dark] select.form-control,\n  [data-bs-theme=dark] .form-control-caret {\n    background-image: var(--control-select-bg-dark);\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, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\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  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\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    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n  }\n  .check:checked, .check: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:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\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: calc(var(--radio-size) * 0.25);\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-fg);\n    cursor: default;\n  }\n  .radio:disabled:checked {\n    opacity: var(--radio-disabled-opacity);\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-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\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-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\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    flex-shrink: 0;\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: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\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:disabled:not(:checked)) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled:not(:checked))::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled:not(:checked)) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch:has(input:checked) {\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:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n  }\n  .switch:has(input:checked:disabled) {\n    opacity: 0.65;\n  }\n  .switch:has(input:checked:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\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-fill-bg: var(--primary-base);\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3));\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\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    --range-tick-width: var(--border-width);\n    --range-tick-height: 0.5rem;\n    --range-tick-bg: var(--border-color);\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n  .form-range-input {\n    display: block;\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-input:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:focus-visible {\n    outline: 0;\n  }\n  .form-range-input:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range-input::-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    background-image: var(--gradient);\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-input::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range-input::-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    background-image: var(--gradient);\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-input::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-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    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input::-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    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input:disabled {\n    pointer-events: none;\n  }\n  .form-range-input:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-webkit-slider-runnable-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc(var(--range-thumb-width) * 0.5 + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n  }\n  .form-range-bubble .tooltip-arrow {\n    position: absolute;\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n    left: 50%;\n    transform: translateX(-50%);\n  }\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * 0.25);\n  }\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    width: 0;\n  }\n  .form-range-tick::before {\n    width: var(--range-tick-width);\n    height: var(--range-tick-height);\n    content: \"\";\n    background-color: var(--range-tick-bg);\n  }\n  .form-range-tick:first-child {\n    align-items: flex-start;\n  }\n  .form-range-tick:last-child {\n    align-items: flex-end;\n  }\n  .form-range-tick-label {\n    margin-top: 0.125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.75rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25);\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-bg: var(--btn-input-bg);\n    --form-floating-label-disabled-bg: var(--bg-2);\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(--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 > label:has(~ textarea) {\n    align-items: flex-start;\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 > label:has(~ .form-control:focus),\n  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),\n  .form-floating > label:has(~ .form-control-plaintext) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ .form-control:-webkit-autofill) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ textarea:focus)::after,\n  .form-floating > label:has(~ textarea:not(:placeholder-shown))::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(--form-floating-label-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > label:has(~ textarea:disabled)::after {\n    background-color: var(--form-floating-label-disabled-bg);\n  }\n  .form-floating > label:has(~ .form-control-plaintext) {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > label:has(~ :disabled),\n  .form-floating > label:has(~ .form-control:disabled) {\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    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(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\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 > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\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(--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(--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    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\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  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5);\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    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\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 forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.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    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .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    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\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  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\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  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\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  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,\n  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.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    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .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    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\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  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\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  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\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  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\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(--radius-5);\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    background-image: none;\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-fg);\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-fg);\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-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\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-fg-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-fg-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-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) 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-fg) 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-fg);\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-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-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    background-image: none;\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    background-image: none;\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-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\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, :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, :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.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\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    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--radius-7));\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::-webkit-details-marker {\n    display: none;\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  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\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]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, 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: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, 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(--radius-5);\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 > p {\n    margin-bottom: 0;\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 > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\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 > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\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(--radius-7);\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-fg);\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-fg);\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(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\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(--radius-7);\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-type: \"\";\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-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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(--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-fg, 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: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\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(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--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: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\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    border-radius: var(--card-border-radius);\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, :last-child),\n  .card-list:not(:first-child, :last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-body:has(+ .card-footer),\n  .card-list:has(+ .card-footer) {\n    border-block-end-width: 0;\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-fg-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-fg-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, :last-child),\n  .card-row .card-list:not(:first-child, :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  @container (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: calc(-1 * var(--card-border-width));\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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:last-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\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    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\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    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\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(--radius-7);\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\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(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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    mask-repeat: no-repeat;\n    mask-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(--radius-5);\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(--radius-5);\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\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(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\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-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\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    .sm-down\\: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  }\n  @media (width < 768px) {\n    .md-down\\: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  }\n  @media (width < 1024px) {\n    .lg-down\\: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  }\n  @media (width < 1280px) {\n    .xl-down\\: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  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\: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  }\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    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\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(--radius-5);\n    --menu-icon-size: 1rem;\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    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\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-type: \"\";\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(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\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-fg, 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-fg-emphasis, 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    background-image: none;\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-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}\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(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\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-fg, 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-fg, 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-fg-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-fg-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  @container (width >= 576px) {\n    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\: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    .sm\\: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    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\: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    .sm\\: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  }\n  @container (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\: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    .md\\: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    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\: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    .md\\: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  }\n  @container (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\: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    .lg\\: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    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\: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    .lg\\: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  }\n  @container (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\: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    .xl\\: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    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\: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    .xl\\: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  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\: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    .\\32 xl\\: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  }\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-type: \"\";\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(--radius-5);\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(--radius-5);\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-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\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    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\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-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 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(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\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 > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .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-type: \"\";\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-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\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 [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\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 [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\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    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\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.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    --drawer-backdrop-bg: var(--bg-body);\n    --drawer-backdrop-opacity: 25%;\n    --drawer-backdrop-blur: 8px;\n    --drawer-inset: var(--spacer);\n    --drawer-zindex: 1045;\n    --drawer-width: 400px;\n    --drawer-height: 30vh;\n    --drawer-padding-x: var(--spacer);\n    --drawer-padding-y: var(--spacer);\n    --drawer-color: var(--fg-body);\n    --drawer-bg: var(--bg-body);\n    --drawer-border-width: var(--border-width);\n    --drawer-border-color: var(--border-color-translucent);\n    --drawer-border-radius: var(--radius-7);\n    --drawer-box-shadow: var(--box-shadow-lg);\n    --drawer-transition-duration: 0.3s;\n    --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --drawer-title-line-height: 1.5;\n    background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-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(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-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-type: \"\";\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    background-image: var(--gradient);\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%, rgb(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(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\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: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\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(--radius-5);\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@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\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-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-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  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\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: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\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@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.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(--radius-5);\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.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-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-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    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\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-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-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-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-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-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-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-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-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-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-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-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-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-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-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-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-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, :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, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :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  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\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  .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    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 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-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\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: start;\n  }\n  .justify-self-end {\n    justify-self: 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-1 {\n    grid-template-columns: 1fr;\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: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\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: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\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: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\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: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\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: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\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: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\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: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\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: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\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: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\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: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\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: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\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: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\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: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\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: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\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: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\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: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\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: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\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    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\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  .hover\\:link-10: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  .hover\\:link-20: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  .hover\\:link-30: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  .hover\\:link-40: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  .hover\\:link-50: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  .hover\\:link-60: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  .hover\\:link-70: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  .hover\\:link-80: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  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3: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  .hover\\:underline-10: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  .hover\\:underline-20: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  .hover\\:underline-30: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  .hover\\:underline-40: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  .hover\\:underline-50: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  .hover\\:underline-60: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  .hover\\:underline-70: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  .hover\\:underline-80: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  .hover\\:underline-90: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  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\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-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-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-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\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: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\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(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--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    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-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// 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-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', 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(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-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(--radius-5),\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(--radius-5),\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(--radius-5),\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(--radius-7),\n    // scss-docs-end root-form-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// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\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 \"../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(--radius-5),\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: transparent; // 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-fg, 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-fg-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], [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  // 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\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [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  // 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-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\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  ::-webkit-outer-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:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !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-negative-margins:     false !default;\n$enable-deprecation-messages: 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 * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $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: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\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:      var(--spacer-2) !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-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  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(--radius-5), $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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\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(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\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-type: \"\";\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: 5%,\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: 10%,\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: 7.5%,\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: var(--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-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, 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-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\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// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\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, $prefix) {\n    @content($breakpoint, $next, $prefix);\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(--radius-5),\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-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\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: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\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], :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], :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, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :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      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\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            .#{breakpoint-prefix($name, $breakpoints)}container {\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$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 ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$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        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$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          .#{$prefix}g-start-#{$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, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\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-2),\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/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(--radius-5),\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='#ffffff80' 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, [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      background-color: var(--control-action-bg);\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, [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    // Plaintext is a standalone class (not combined with `.form-control`), so it\n    // needs its own copy of the control tokens. Without them the `var(--control-*)`\n    // references below are invalid and fall back to their initial values (e.g.\n    // `border-width: medium`), which adds phantom inline borders and misaligns the\n    // text from a floating label.\n    @include tokens($form-control-tokens);\n\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  .form-control-caret {\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  [data-bs-theme=\"dark\"] {\n    select.form-control,\n    .form-control-caret {\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, [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(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\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 \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" 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: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\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  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\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: 33%;\n\n    &:checked,\n    &: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/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\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: var(--bg-body),\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  .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: calc(var(--radio-size) * .25);\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-fg);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--radio-disabled-opacity);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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$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.75),\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-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\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    flex-shrink: 0;\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 rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\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:disabled:not(:checked)) {\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(--fg-3);\n        cursor: default;\n      }\n    }\n\n    &:has(input:checked) {\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\n    }\n\n    &:has(input:checked:disabled) {\n      opacity: .65;\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\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/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\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-fill-bg: var(--primary-base),\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3)),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\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    --range-tick-width: var(--border-width),\n    --range-tick-height: .5rem,\n    --range-tick-bg: var(--border-color),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n// stylelint-enable custom-property-no-missing-var-function\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;\n  cursor: var(--range-track-cursor);\n  // Fill (progress) up to the thumb. The Range plugin keeps `--range-fill` (0–1) in sync.\n  background-color: var(--range-track-bg);\n  background-image:\n    linear-gradient(\n      to right,\n      var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%),\n      transparent calc(var(--range-fill, 0) * 100%)\n    );\n  border-color: transparent;\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    position: relative;\n    display: block;\n    width: 100%;\n  }\n\n  .form-range-input {\n    display: block;\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    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\n      outline: 0;\n\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\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);\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      &::-webkit-slider-runnable-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n\n      &::-moz-range-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n    }\n  }\n\n  // Value bubble: reuses the tooltip styles (`.tooltip` markup) so we don't duplicate the\n  // pill and arrow. We only add the static positioning the Tooltip plugin would normally do.\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc((var(--range-thumb-width) * .5) + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n\n    .tooltip-arrow {\n      position: absolute;\n      bottom: calc(-1 * var(--tooltip-arrow-height));\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n\n  // Tick marks generated from the linked <datalist>. Plugin builds `grid-template-columns`\n  // from the gaps between values so each tick lands on a grid line (handles uneven values).\n  // Track is inset by 1/4th of the thumb width to keep alignment.\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * .25);\n  }\n\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    // Zero-width items so labels never widen their `fr` column; the tick line and label\n    // overflow centered on the grid line via `align-items`.\n    width: 0;\n\n    &::before {\n      width: var(--range-tick-width);\n      height: var(--range-tick-height);\n      content: \"\";\n      background-color: var(--range-tick-bg);\n    }\n\n    &:first-child {\n      align-items: flex-start;\n    }\n\n    &:last-child {\n      align-items: flex-end;\n    }\n  }\n\n  .form-range-tick-label {\n    margin-top: .125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\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: rgb(255 255 255 / .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/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.75rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25),\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    // Backgrounds for the textarea label's masking pseudo-element. Mirrors\n    // `.form-control` here because the label is a sibling of the control, so it\n    // can't inherit the control's own `--control-bg`/`--control-disabled-bg`.\n    --form-floating-label-bg: var(--btn-input-bg),\n    --form-floating-label-disabled-bg: var(--bg-2),\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(--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    // Anchor the label to the top for textareas so it floats correctly at any height\n    > label:has(~ textarea) {\n      align-items: flex-start;\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    // The label precedes the control in the DOM so screen readers announce it\n    // before the field's value, so we look forward with `:has()` to react to the\n    // control's state (focus, value, disabled, etc.).\n    > label:has(~ .form-control:focus),\n    > label:has(~ .form-control:not(:placeholder-shown)),\n    > label:has(~ .form-control-plaintext) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > label:has(~ .form-control:-webkit-autofill) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    > label:has(~ textarea:focus),\n    > label:has(~ textarea:not(:placeholder-shown)) {\n      &::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(--form-floating-label-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > label:has(~ textarea:disabled)::after {\n      background-color: var(--form-floating-label-disabled-bg);\n    }\n\n    > label:has(~ .form-control-plaintext) {\n      border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n    }\n\n    > label:has(~ :disabled),\n    > label:has(~ .form-control:disabled) { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" 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    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    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\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    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\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  }\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(--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/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\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    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\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    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // let clicks fall through to the input overlay\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\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  // OTP input sizing — keep in sync with `$form-control-sizes`.\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    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\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(--radius-5),\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      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\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 \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-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: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — the validation class lives on .form-range-input, while feedback sits outside\n  // the .form-range wrapper, so we use :has() to toggle it.\n  .form-range-input {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n    }\n  }\n\n  .form-range:has(.form-range-input.is-#{$state}) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control: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  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\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(--radius-5),\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 rgb(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\": \"fg\",\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\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\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-fg, 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-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-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  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\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, :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, :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/mask-icon\" 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.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\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    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\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(--radius-7)),\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    &::-webkit-details-marker {\n      display: none;\n    }\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    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\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\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, 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: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, 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(--radius-5),\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 > p {\n    margin-bottom: 0;\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      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\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    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\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} > .avatar {\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      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" 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(--radius-7),\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\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\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/mask-icon\" 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(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\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(--radius-7),\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-type: \"\";\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    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\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(--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-fg, 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: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\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(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--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: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .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, :last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n\n    // The footer draws a full border (including its top edge), so a body/list\n    // segment that precedes it must not also draw a bottom border or the seam\n    // doubles up.\n    &:has(+ .card-footer) {\n      border-block-end-width: 0;\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-fg-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-fg-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, :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 groups lay out their cards in a row using a container query, so wrap the\n  // group in a query container (e.g., the `.contains-inline` utility) for the row\n  // layout to take effect. Without a query container the cards remain stacked.\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 container-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        // Borders now live on the inner segments (header, body, list, footer)\n        // and the card images use outlines, so adjacent cards would otherwise\n        // render a doubled-up border at each seam. Pull subsequent cards back by\n        // one border width so their leading edges overlap the previous card's\n        // trailing edge, collapsing the seam into a single line. Gap can't be\n        // negative, so this relies on a negative margin.\n        + .card {\n          margin-inline-start: calc(-1 * var(--card-border-width));\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            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\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            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><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-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\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/mask-icon\" 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(--radius-7),\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    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\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(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path 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>\"), $size: null);\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(--radius-5));\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(--radius-5));\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(--radius-5);\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(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\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/dialog-shared\" 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(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\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  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\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    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\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    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\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    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\: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    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(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    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\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 \"mixins/transition\" 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(--radius-7),\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(--radius-5),\n    --menu-icon-size: 1rem,\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    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\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-type: \"\";\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(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\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-fg, 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-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\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      background-color: var(--theme-bg, var(--menu-item-active-bg));\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-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  // scss-docs-end submenu\n}\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(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\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-type: \"\"; 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-fg, 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-fg, 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-fg-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-fg-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  // The responsive variants use container queries, so wrap the list group in a\n  // query container (e.g., the `.contains-inline` utility) for them to take effect.\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}list-group-horizontal {\n      @include container-breakpoint-up($breakpoint) {\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(--radius-5),\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-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\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-type: \"\";\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(--radius-5));\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    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\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  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\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  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\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/mask-icon\" 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(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\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    background-color: var(--navbar-bg, var(--bg-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      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\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-type: \"\";\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  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` 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    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\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      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\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, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\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/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  // Native ::backdrop for modal drawer.\n  // ::backdrop lives in the top layer outside the DOM tree, so it does NOT\n  // inherit custom properties from the element. Tokens must be applied directly.\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      @include tokens($drawer-backdrop-tokens);\n      @include tokens($drawer-tokens);\n      background-color: color-mix(in oklch, var(--drawer-backdrop-bg) var(--drawer-backdrop-opacity), transparent);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    --drawer-inset: 0;\n    --drawer-border-radius: 0;\n    --drawer-border-width: 0;\n    --drawer-box-shadow: none;\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\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%, rgb(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(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\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: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\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","@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/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(--radius-5),\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 \"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-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\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: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\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: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, 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-size: var(--stepper-font-size);\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      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-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  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\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}\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: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\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    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\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(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\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 \"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: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--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(--radius-5),\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@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","@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    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\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      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-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, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\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: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// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($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: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$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// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-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    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-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    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-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    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-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    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-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    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-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    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-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    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-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  \"fg\": var(--fg-body),\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  \"bg\": var(--bg-body),\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(color-mix(in oklch, var(--gray-100), var(--gray-200)), 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, :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, :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 \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\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 target children via `child-selector`, wrapped in :where() for zero specificity\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 emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\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, $prefix: \"\") {\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, dark, important, state, variables, child-selector, enabled;\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  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` 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  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: 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        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\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    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
index a1535dc0a76280850f2441d1d1d8c95cc498e986..31817134d723e86da4af0121138cd7ae95b1e4c9 100644 (file)
@@ -596,6 +596,13 @@ class BaseComponent extends Config {
     }
     this._element = element;
     this._config = this._getConfig(config);
+
+    // Dispose any existing instance bound to this element before registering the new one,
+    // so its event listeners and timers are cleaned up instead of leaking
+    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY);
+    if (existingInstance) {
+      existingInstance.dispose();
+    }
     Data.set(this._element, this.constructor.DATA_KEY, this);
   }
 
@@ -610,7 +617,13 @@ class BaseComponent extends Config {
 
   // Private
   _queueCallback(callback, element, isAnimated = true) {
-    executeAfterTransition(callback, element, isAnimated);
+    executeAfterTransition(() => {
+      // Don't run the completion callback if the instance was disposed mid-transition
+      if (!this._element) {
+        return;
+      }
+      callback();
+    }, element, isAnimated);
   }
   _getConfig(config) {
     config = this._mergeConfigObj(config, this._element);
@@ -687,6 +700,9 @@ const SelectorEngine = {
     }
     return parents;
   },
+  closest(element, selector) {
+    return Element.prototype.closest.call(element, selector);
+  },
   prev(element, selector) {
     let previous = element.previousElementSibling;
     while (previous) {
@@ -794,11 +810,11 @@ const eventAction = (onEvent, stringSelector, callback) => {
  * Constants
  */
 
-const NAME$k = '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 NAME$l = 'alert';
+const DATA_KEY$h = 'bs.alert';
+const EVENT_KEY$i = `.${DATA_KEY$h}`;
+const EVENT_CLOSE = `close${EVENT_KEY$i}`;
+const EVENT_CLOSED = `closed${EVENT_KEY$i}`;
 const CLASS_NAME_FADE$4 = 'fade';
 const CLASS_NAME_SHOW$6 = 'show';
 
@@ -809,7 +825,7 @@ const CLASS_NAME_SHOW$6 = 'show';
 class Alert extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$k;
+    return NAME$l;
   }
 
   // Public
@@ -849,13 +865,13 @@ enableDismissTrigger(Alert, 'close');
  * Constants
  */
 
-const NAME$j = 'button';
-const DATA_KEY$f = 'bs.button';
-const EVENT_KEY$g = `.${DATA_KEY$f}`;
-const DATA_API_KEY$b = '.data-api';
+const NAME$k = 'button';
+const DATA_KEY$g = 'bs.button';
+const EVENT_KEY$h = `.${DATA_KEY$g}`;
+const DATA_API_KEY$c = '.data-api';
 const CLASS_NAME_ACTIVE$4 = 'active';
 const SELECTOR_DATA_TOGGLE$a = '[data-bs-toggle="button"]';
-const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$g}${DATA_API_KEY$b}`;
+const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$h}${DATA_API_KEY$c}`;
 
 /**
  * Class definition
@@ -864,7 +880,7 @@ const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$g}${DATA_API_KEY$b}`;
 class Button extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$j;
+    return NAME$k;
   }
 
   // Public
@@ -897,22 +913,22 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$8, SELECTOR_DATA_TOGGLE$a, event
  * Constants
  */
 
-const NAME$i = 'carousel';
-const DATA_KEY$e = 'bs.carousel';
-const EVENT_KEY$f = `.${DATA_KEY$e}`;
-const DATA_API_KEY$a = '.data-api';
+const NAME$j = 'carousel';
+const DATA_KEY$f = 'bs.carousel';
+const EVENT_KEY$g = `.${DATA_KEY$f}`;
+const DATA_API_KEY$b = '.data-api';
 const ARROW_LEFT_KEY$2 = 'ArrowLeft';
 const ARROW_RIGHT_KEY$2 = 'ArrowRight';
 const DIRECTION_LEFT = 'left';
 const DIRECTION_RIGHT = 'right';
-const EVENT_SLIDE = `slide${EVENT_KEY$f}`;
-const EVENT_SLID = `slid${EVENT_KEY$f}`;
-const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$f}`;
-const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$f}`;
-const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$f}`;
-const EVENT_POINTERDOWN$1 = `pointerdown${EVENT_KEY$f}`;
-const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$f}${DATA_API_KEY$a}`;
-const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$f}${DATA_API_KEY$a}`;
+const EVENT_SLIDE = `slide${EVENT_KEY$g}`;
+const EVENT_SLID = `slid${EVENT_KEY$g}`;
+const EVENT_KEYDOWN$2 = `keydown${EVENT_KEY$g}`;
+const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$g}`;
+const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$g}`;
+const EVENT_POINTERDOWN$1 = `pointerdown${EVENT_KEY$g}`;
+const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$g}${DATA_API_KEY$b}`;
+const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$g}${DATA_API_KEY$b}`;
 const CLASS_NAME_CAROUSEL = 'carousel';
 const CLASS_NAME_ACTIVE$3 = 'active';
 const CLASS_NAME_FADE$3 = 'carousel-fade';
@@ -929,10 +945,14 @@ const CLASS_NAME_PLAYING = 'carousel-playing';
 // `--carousel-interval` used in the SCSS source becomes this at runtime.
 const PROPERTY_INTERVAL = '--bs-carousel-interval';
 
-// How many frames the scroll-settle watcher waits when no movement is ever
-// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before
-// it gives up and restores snapping anyway.
-const SCROLL_SETTLE_MAX_FRAMES = 10;
+// Duration (ms) of the JS-driven slide animation used for programmatic
+// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`
+// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,
+// because Safari mis-scales programmatic smooth scrolls under page zoom — a
+// one-slide jump sails well past the target (by the zoom factor) and the
+// restored snap then visibly yanks the slide back. Animating by hand is immune
+// to that and gives every jump a consistent duration.
+const SCROLL_DURATION = 300;
 
 // How far below the most-visible slide a slide's IntersectionRatio can be while
 // still counting as the active (left-most) slide. After a programmatic scroll
@@ -959,14 +979,14 @@ const KEY_TO_DIRECTION = {
 const ENDS_STOP = 'stop';
 const ENDS_WRAP = 'wrap';
 const ENDS_LOOP = 'loop';
-const Default$h = {
+const Default$i = {
   autoplay: false,
   ends: ENDS_LOOP,
   interval: 5000,
   keyboard: true,
   pause: 'hover'
 };
-const DefaultType$h = {
+const DefaultType$i = {
   autoplay: 'boolean',
   ends: 'string',
   interval: 'number',
@@ -974,6 +994,10 @@ const DefaultType$h = {
   pause: '(string|boolean)'
 };
 
+// Standard ease-in-out cubic, so the JS-driven scroll accelerates and
+// decelerates like a native smooth scroll rather than moving linearly.
+const easeInOutCubic = progress => progress < 0.5 ? 4 * progress * progress * progress : 1 - (-2 * progress + 2) ** 3 / 2;
+
 /**
  * Class definition
  */
@@ -994,7 +1018,8 @@ class Carousel extends BaseComponent {
     this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element);
     this._interval = null;
     this._observer = null;
-    this._snapRestoreFrame = null;
+    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).
+    this._scrollFrame = null;
     // True while a seamless loop transition is animating, so the
     // IntersectionObserver and re-entrant navigation don't interfere.
     this._looping = false;
@@ -1016,13 +1041,13 @@ class Carousel extends BaseComponent {
 
   // 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
@@ -1104,8 +1129,8 @@ class Carousel extends BaseComponent {
     if (this._observer) {
       this._observer.disconnect();
     }
-    if (this._snapRestoreFrame !== null) {
-      cancelAnimationFrame(this._snapRestoreFrame);
+    if (this._scrollFrame !== null) {
+      cancelAnimationFrame(this._scrollFrame);
     }
 
     // Tidy up any in-flight loop transition: drop a stray clone and restore
@@ -1117,7 +1142,7 @@ class Carousel extends BaseComponent {
 
     // The pointerdown listener lives on the viewport (`.carousel-inner`), which
     // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.
-    EventHandler.off(this._viewport, EVENT_KEY$f);
+    EventHandler.off(this._viewport, EVENT_KEY$g);
     super.dispose();
   }
 
@@ -1126,7 +1151,7 @@ class Carousel extends BaseComponent {
   // disagree about whether the carousel wraps.
   _configAfterMerge(config) {
     if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {
-      config.ends = Default$h.ends;
+      config.ends = Default$i.ends;
     }
     return config;
   }
@@ -1137,7 +1162,7 @@ class Carousel extends BaseComponent {
   }
   _addEventListeners() {
     if (this._config.keyboard) {
-      EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
+      EventHandler.on(this._element, EVENT_KEYDOWN$2, event => this._keydown(event));
     }
     if (this._config.pause === 'hover') {
       EventHandler.on(this._element, EVENT_MOUSEENTER$2, () => this.pause());
@@ -1240,23 +1265,80 @@ class Carousel extends BaseComponent {
       return;
     }
 
-    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,
-    // but it also clamps *programmatic* scrolls to one snap point — which would
-    // break multi-slide jumps from an indicator click, `to()`, or wrapping from
-    // the last slide back to the first. Disable snapping for the duration of the
-    // programmatic scroll, then restore it once the scroll settles so the slide
-    // still rests precisely (honouring peek/gap).
+    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single
+    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or
+    // wrapping from the last slide back to the first). Suspend snapping while we
+    // animate, then restore it once we arrive so the slide rests precisely on the
+    // snap point (honouring peek/gap).
     const targetLeft = this._viewport.scrollLeft + left;
     this._viewport.style.scrollSnapType = 'none';
-    this._viewport.scrollBy({
-      left,
-      top: 0,
-      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets
-      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would
-      // still animate. `'instant'` forces an immediate, motion-free jump.
-      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'
+    this._animateScroll(targetLeft, () => {
+      this._viewport.style.scrollSnapType = '';
+      // Without IntersectionObserver nothing else fires `slid`/updates the active
+      // slide after a programmatic scroll, so do it here. With the observer
+      // present this is a no-op (it already moved the active index to `index`).
+      if (!this._observer) {
+        this._setActive(index);
+      }
+
+      // The IntersectionObserver doesn't fire once the viewport has stopped, so
+      // refresh the end controls here to catch the final settle landing exactly
+      // on the scroll extent (e.g. disabling `next` at the last view).
+      this._updateEndControls();
     });
-    this._restoreSnapWhenSettled(targetLeft, index);
+  }
+
+  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,
+  // stepping the position ourselves each frame (the caller suspends snapping
+  // first and restores it in `onComplete`). This replaces
+  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic
+  // jumps overshoot the target and snap back. Because we set every frame's
+  // absolute position with an instant scroll, the animation can't overshoot and
+  // every jump takes the same time, in every browser.
+  _animateScroll(targetLeft, onComplete) {
+    if (this._scrollFrame !== null) {
+      cancelAnimationFrame(this._scrollFrame);
+      this._scrollFrame = null;
+    }
+    const startLeft = this._viewport.scrollLeft;
+    const distance = targetLeft - startLeft;
+
+    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.
+    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {
+      this._viewport.scrollTo({
+        left: targetLeft,
+        behavior: 'instant'
+      });
+      onComplete();
+      return;
+    }
+    let startTime = null;
+    const step = now => {
+      if (startTime === null) {
+        startTime = now;
+      }
+      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1);
+      // `'instant'` (not the default) because the viewport sets
+      // `scroll-behavior: smooth` in CSS; without it each step would itself
+      // animate and fight this loop.
+      this._viewport.scrollTo({
+        left: startLeft + distance * easeInOutCubic(progress),
+        behavior: 'instant'
+      });
+      if (progress < 1) {
+        this._scrollFrame = requestAnimationFrame(step);
+        return;
+      }
+
+      // Land exactly on target, guarding against floating-point drift.
+      this._viewport.scrollTo({
+        left: targetLeft,
+        behavior: 'instant'
+      });
+      this._scrollFrame = null;
+      onComplete();
+    };
+    this._scrollFrame = requestAnimationFrame(step);
   }
 
   // Horizontal distance to scroll the viewport so `element` rests where the
@@ -1318,12 +1400,7 @@ class Carousel extends BaseComponent {
       // current slide so the insertion doesn't flash before we animate.
       this._jumpScroll(this._scrollDelta(items[fromIndex]));
     }
-    this._viewport.scrollBy({
-      left: this._scrollDelta(clone),
-      top: 0,
-      behavior: 'smooth'
-    });
-    this._afterScrollSettles(() => {
+    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {
       // Teleport to the real destination without animation. JS runs to
       // completion before the browser paints, so removing the clone and the
       // compensating scroll land in a single frame (no visible flash).
@@ -1361,81 +1438,6 @@ class Carousel extends BaseComponent {
     });
   }
 
-  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops
-  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps
-  // to the *nearest* snap point, so if we restored mid-animation the viewport
-  // could jump back to the slide we came from — most visible stepping to the
-  // first/last slide, where it looks like the control "doesn't work".
-  _restoreSnapWhenSettled(targetLeft, index) {
-    this._afterScrollSettles(() => {
-      this._viewport.style.scrollSnapType = '';
-      // Without IntersectionObserver nothing else fires `slid`/updates the active
-      // slide after a programmatic scroll, so do it here. With the observer
-      // present this is a no-op (it already moved the active index to `index`).
-      if (!this._observer && index !== undefined) {
-        this._setActive(index);
-      }
-
-      // The IntersectionObserver doesn't fire once the viewport has stopped, so
-      // refresh the end controls here to catch the final ~1px settle landing
-      // exactly on the scroll extent (e.g. disabling `next` at the last view).
-      this._updateEndControls();
-    }, targetLeft);
-  }
-
-  // Invoke `callback` once the viewport stops moving. We watch the scroll
-  // position across frames instead of relying on the `scrollend` event, which
-  // isn't available across our supported browsers yet.
-  //
-  // Crucially, we only start counting "stable" frames once the scroll has
-  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first
-  // frame or two, so naively treating those initial unchanged frames as
-  // "settled" would re-enable `mandatory` snapping mid-animation — which cancels
-  // the in-flight programmatic scroll and lands on the wrong slide (most visible
-  // in multi-item layouts). If the scroll never moves (delta clamped at an end,
-  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.
-  //
-  // When `targetLeft` is known we also finish the moment we arrive there, so the
-  // snap is restored exactly on the destination snap point and can't re-snap the
-  // viewport backwards (the failure mode where stepping to the first/last slide
-  // appears to do nothing).
-  _afterScrollSettles(callback, targetLeft) {
-    if (typeof requestAnimationFrame === 'undefined') {
-      callback();
-      return;
-    }
-    if (this._snapRestoreFrame !== null) {
-      cancelAnimationFrame(this._snapRestoreFrame);
-    }
-    const startLeft = this._viewport.scrollLeft;
-    let lastLeft = startLeft;
-    let stableFrames = 0;
-    let waited = 0;
-    let hasMoved = false;
-    const tick = () => {
-      const currentLeft = this._viewport.scrollLeft;
-      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1;
-      if (Math.abs(currentLeft - startLeft) > 1) {
-        hasMoved = true;
-      }
-
-      // Only accrue stable frames after movement begins, so the pre-animation
-      // and ease-in frames don't prematurely count as settled.
-      if (hasMoved) {
-        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0;
-      }
-      lastLeft = currentLeft;
-      waited += 1;
-      if (reachedTarget || hasMoved && stableFrames >= 3 || !hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES) {
-        this._snapRestoreFrame = null;
-        callback();
-        return;
-      }
-      this._snapRestoreFrame = requestAnimationFrame(tick);
-    };
-    this._snapRestoreFrame = requestAnimationFrame(tick);
-  }
-
   // Fade mode just swaps the active class; the CSS opacity transition on
   // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and
   // collapses to an instant swap under reduced motion, via the `transition`
@@ -1703,15 +1705,15 @@ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
  * Constants
  */
 
-const NAME$h = 'collapse';
-const DATA_KEY$d = 'bs.collapse';
-const EVENT_KEY$e = `.${DATA_KEY$d}`;
-const DATA_API_KEY$9 = '.data-api';
-const EVENT_SHOW$7 = `show${EVENT_KEY$e}`;
-const EVENT_SHOWN$6 = `shown${EVENT_KEY$e}`;
-const EVENT_HIDE$6 = `hide${EVENT_KEY$e}`;
-const EVENT_HIDDEN$8 = `hidden${EVENT_KEY$e}`;
-const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const NAME$i = 'collapse';
+const DATA_KEY$e = 'bs.collapse';
+const EVENT_KEY$f = `.${DATA_KEY$e}`;
+const DATA_API_KEY$a = '.data-api';
+const EVENT_SHOW$7 = `show${EVENT_KEY$f}`;
+const EVENT_SHOWN$6 = `shown${EVENT_KEY$f}`;
+const EVENT_HIDE$6 = `hide${EVENT_KEY$f}`;
+const EVENT_HIDDEN$8 = `hidden${EVENT_KEY$f}`;
+const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$f}${DATA_API_KEY$a}`;
 const CLASS_NAME_SHOW$5 = 'show';
 const CLASS_NAME_COLLAPSE = 'collapse';
 const CLASS_NAME_COLLAPSING = 'collapsing';
@@ -1722,11 +1724,11 @@ const WIDTH = 'width';
 const HEIGHT = 'height';
 const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
 const SELECTOR_DATA_TOGGLE$9 = '[data-bs-toggle="collapse"]';
-const Default$g = {
+const Default$h = {
   parent: null,
   toggle: true
 };
-const DefaultType$g = {
+const DefaultType$h = {
   parent: '(null|element)',
   toggle: 'boolean'
 };
@@ -1759,13 +1761,13 @@ class Collapse 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
@@ -3655,11 +3657,11 @@ const disposeBreakpointListeners = listeners => {
  * Constants
  */
 
-const NAME$g = 'menu';
-const DATA_KEY$c = 'bs.menu';
-const EVENT_KEY$d = `.${DATA_KEY$c}`;
-const DATA_API_KEY$8 = '.data-api';
-const ESCAPE_KEY$1 = 'Escape';
+const NAME$h = 'menu';
+const DATA_KEY$d = 'bs.menu';
+const EVENT_KEY$e = `.${DATA_KEY$d}`;
+const DATA_API_KEY$9 = '.data-api';
+const ESCAPE_KEY$2 = 'Escape';
 const TAB_KEY$1 = 'Tab';
 const ARROW_UP_KEY$2 = 'ArrowUp';
 const ARROW_DOWN_KEY$2 = 'ArrowDown';
@@ -3671,13 +3673,13 @@ const ENTER_KEY$1 = 'Enter';
 const SPACE_KEY$1 = ' ';
 const RIGHT_MOUSE_BUTTON = 2;
 const SUBMENU_CLOSE_DELAY = 100;
-const EVENT_HIDE$5 = `hide${EVENT_KEY$d}`;
-const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$d}`;
-const EVENT_SHOW$6 = `show${EVENT_KEY$d}`;
-const EVENT_SHOWN$5 = `shown${EVENT_KEY$d}`;
-const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
-const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$d}${DATA_API_KEY$8}`;
-const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$d}${DATA_API_KEY$8}`;
+const EVENT_HIDE$5 = `hide${EVENT_KEY$e}`;
+const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$e}`;
+const EVENT_SHOW$6 = `show${EVENT_KEY$e}`;
+const EVENT_SHOWN$5 = `shown${EVENT_KEY$e}`;
+const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$e}${DATA_API_KEY$9}`;
 const CLASS_NAME_SHOW$4 = 'show';
 const SELECTOR_DATA_TOGGLE$8 = '[data-bs-toggle="menu"]:not(.disabled):not(:disabled)';
 const SELECTOR_MENU$2 = '.menu';
@@ -3694,7 +3696,7 @@ const resolveLogicalPlacement = placement => {
   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 = {
+const Default$g = {
   autoClose: true,
   boundary: 'clippingParents',
   container: false,
@@ -3708,7 +3710,7 @@ const Default$f = {
   submenuTrigger: 'both',
   submenuDelay: SUBMENU_CLOSE_DELAY
 };
-const DefaultType$f = {
+const DefaultType$g = {
   autoClose: '(boolean|string)',
   boundary: '(string|element)',
   container: '(string|element|boolean)',
@@ -3737,12 +3739,20 @@ class Menu extends BaseComponent {
     this._floatingCleanup = null;
     this._mediaQueryListeners = [];
     this._responsivePlacements = null;
-    this._parent = this._element.parentNode;
-    this._isSubmenu = this._parent.classList?.contains('submenu');
+    this._parent = this._element.parentNode; // menu wrapper
     this._openSubmenus = new Map();
     this._submenuCloseTimeouts = new Map();
     this._hoverIntentData = null;
     this._menu = this._config.menu || this._findMenu();
+
+    // When the menu was discovered from the DOM, refine the wrapper to the closest
+    // ancestor that actually contains it, so the toggle doesn't have to be a direct
+    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still
+    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.
+    if (!this._config.menu && this._menu) {
+      this._parent = this._findWrapper(this._menu);
+    }
+    this._isSubmenu = this._parent.classList?.contains('submenu');
     this._menuOriginalParent = this._menu?.parentNode;
     this._parseResponsivePlacements();
     this._setupSubmenuListeners();
@@ -3750,13 +3760,13 @@ class Menu 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
@@ -3819,7 +3829,17 @@ class Menu extends BaseComponent {
 
   // 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);
+    // Fall back to the closest ancestor that contains a menu so the toggle can be
+    // nested deeper than a direct sibling of `.menu`.
+    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU$2})`);
+    return SelectorEngine.next(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.findOne(SELECTOR_MENU$2, wrapper || this._parent);
+  }
+  _findWrapper(menu) {
+    let wrapper = this._element.parentNode;
+    while (wrapper instanceof Element && !wrapper.contains(menu)) {
+      wrapper = wrapper.parentNode;
+    }
+    return wrapper instanceof Element ? wrapper : this._element.parentNode;
   }
   _completeHide(relatedTarget) {
     const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
@@ -3848,7 +3868,7 @@ class Menu extends BaseComponent {
   _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.`);
+      throw new TypeError(`${NAME$h.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
     }
     return config;
   }
@@ -4106,6 +4126,12 @@ class Menu extends BaseComponent {
     }
     trigger.setAttribute('aria-expanded', 'true');
     trigger.setAttribute('aria-haspopup', 'true');
+
+    // Keep the submenu transparent until Floating UI applies the first position, so
+    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)
+    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps
+    // the submenu measurable for flip/shift and focusable for keyboard navigation.
+    submenu.style.opacity = '0';
     submenu.classList.add(CLASS_NAME_SHOW$4);
     submenuWrapper.classList.add(CLASS_NAME_SHOW$4);
     const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
@@ -4135,10 +4161,13 @@ class Menu extends BaseComponent {
     }
     submenu.classList.remove(CLASS_NAME_SHOW$4);
     submenuWrapper.classList.remove(CLASS_NAME_SHOW$4);
-    submenu.style.position = '';
-    submenu.style.left = '';
-    submenu.style.top = '';
-    submenu.style.margin = '';
+
+    // Keep the Floating UI position styles in place while the submenu fades out.
+    // Clearing them here would let the submenu snap back to its CSS fallback
+    // (`top: 0`, over the parent menu) for the duration of the close transition,
+    // causing it to flash over the parent. They get recomputed on the next open
+    // (and the opacity gate in `_openSubmenu` hides any stale position until then).
+    submenu.style.opacity = '';
   }
   _closeAllSubmenus() {
     for (const [submenu] of this._openSubmenus) {
@@ -4167,7 +4196,12 @@ class Menu extends BaseComponent {
     }), shift({
       padding: 8
     })];
-    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
+    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware).then(finalPlacement => {
+      // Reveal the submenu now that it has been positioned (see `_openSubmenu`);
+      // clearing the inline opacity lets the CSS fade-in transition take over.
+      submenu.style.opacity = '';
+      return finalPlacement;
+    });
     updatePosition();
     return autoUpdate(referenceElement, submenu, updatePosition);
   }
@@ -4349,7 +4383,7 @@ class Menu extends BaseComponent {
   }
   static dataApiKeydownHandler(event) {
     const isInput = /input|textarea/i.test(event.target.tagName);
-    const isEscapeEvent = event.key === ESCAPE_KEY$1;
+    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);
@@ -4420,11 +4454,11 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, functi
  * Constants
  */
 
-const NAME$f = 'combobox';
-const DATA_KEY$b = 'bs.combobox';
-const EVENT_KEY$c = `.${DATA_KEY$b}`;
-const DATA_API_KEY$7 = '.data-api';
-const ESCAPE_KEY = 'Escape';
+const NAME$g = 'combobox';
+const DATA_KEY$c = 'bs.combobox';
+const EVENT_KEY$d = `.${DATA_KEY$c}`;
+const DATA_API_KEY$8 = '.data-api';
+const ESCAPE_KEY$1 = 'Escape';
 const TAB_KEY = 'Tab';
 const ARROW_UP_KEY$1 = 'ArrowUp';
 const ARROW_DOWN_KEY$1 = 'ArrowDown';
@@ -4432,12 +4466,12 @@ const HOME_KEY$1 = 'Home';
 const END_KEY$1 = 'End';
 const ENTER_KEY = 'Enter';
 const SPACE_KEY = ' ';
-const EVENT_CHANGE$2 = `change${EVENT_KEY$c}`;
-const EVENT_SHOW$5 = `show${EVENT_KEY$c}`;
-const EVENT_SHOWN$4 = `shown${EVENT_KEY$c}`;
-const EVENT_HIDE$4 = `hide${EVENT_KEY$c}`;
-const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$c}`;
-const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_CHANGE$3 = `change${EVENT_KEY$d}`;
+const EVENT_SHOW$5 = `show${EVENT_KEY$d}`;
+const EVENT_SHOWN$4 = `shown${EVENT_KEY$d}`;
+const EVENT_HIDE$4 = `hide${EVENT_KEY$d}`;
+const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$d}`;
+const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
 const CLASS_NAME_SHOW$3 = 'show';
 const CLASS_NAME_SELECTED = 'selected';
 const CLASS_NAME_PLACEHOLDER = 'combobox-placeholder';
@@ -4448,7 +4482,7 @@ const SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:di
 const SELECTOR_VALUE = '.combobox-value';
 const SELECTOR_SEARCH_INPUT = '.combobox-search-input';
 const SELECTOR_NO_RESULTS = '.combobox-no-results';
-const Default$e = {
+const Default$f = {
   boundary: 'clippingParents',
   multiple: false,
   name: null,
@@ -4458,7 +4492,7 @@ const Default$e = {
   search: false,
   searchNormalize: false
 };
-const DefaultType$e = {
+const DefaultType$f = {
   boundary: '(string|element)',
   multiple: 'boolean',
   name: '(string|null)',
@@ -4491,13 +4525,13 @@ class Combobox extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$e;
+    return Default$f;
   }
   static get DefaultType() {
-    return DefaultType$e;
+    return DefaultType$f;
   }
   static get NAME() {
-    return NAME$f;
+    return NAME$g;
   }
 
   // Public
@@ -4540,8 +4574,8 @@ class Combobox extends BaseComponent {
       this._hiddenInput.remove();
       this._hiddenInput = null;
     }
-    EventHandler.off(this._menu, EVENT_KEY$c);
-    EventHandler.off(this._toggle, EVENT_KEY$c);
+    EventHandler.off(this._menu, EVENT_KEY$d);
+    EventHandler.off(this._toggle, EVENT_KEY$d);
     super.dispose();
   }
 
@@ -4608,7 +4642,7 @@ class Combobox extends BaseComponent {
             items[0].focus();
           }
         }
-        if (event.key === ESCAPE_KEY) {
+        if (event.key === ESCAPE_KEY$1) {
           this.hide();
           this._toggle.focus();
         }
@@ -4631,7 +4665,7 @@ class Combobox extends BaseComponent {
     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$2, {
+    EventHandler.trigger(this._toggle, EVENT_CHANGE$3, {
       value,
       item
     });
@@ -4726,7 +4760,7 @@ class Combobox extends BaseComponent {
       key,
       target
     } = event;
-    if (key === ESCAPE_KEY) {
+    if (key === ESCAPE_KEY$1) {
       event.preventDefault();
       event.stopPropagation();
       this.hide();
@@ -4808,21 +4842,21 @@ var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnP
  * Constants
  */
 
-const NAME$e = 'datepicker';
-const DATA_KEY$a = 'bs.datepicker';
-const EVENT_KEY$b = `.${DATA_KEY$a}`;
-const DATA_API_KEY$6 = '.data-api';
-const EVENT_CHANGE$1 = `change${EVENT_KEY$b}`;
-const EVENT_SHOW$4 = `show${EVENT_KEY$b}`;
-const EVENT_SHOWN$3 = `shown${EVENT_KEY$b}`;
-const EVENT_HIDE$3 = `hide${EVENT_KEY$b}`;
-const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$b}`;
-const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
-const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$b}${DATA_API_KEY$6}`;
+const NAME$f = 'datepicker';
+const DATA_KEY$b = 'bs.datepicker';
+const EVENT_KEY$c = `.${DATA_KEY$b}`;
+const DATA_API_KEY$7 = '.data-api';
+const EVENT_CHANGE$2 = `change${EVENT_KEY$c}`;
+const EVENT_SHOW$4 = `show${EVENT_KEY$c}`;
+const EVENT_SHOWN$3 = `shown${EVENT_KEY$c}`;
+const EVENT_HIDE$3 = `hide${EVENT_KEY$c}`;
+const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$c}`;
+const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$c}${DATA_API_KEY$7}`;
 const SELECTOR_DATA_TOGGLE$6 = '[data-bs-toggle="datepicker"]';
 const HIDE_DELAY = 100; // ms delay before hiding after selection
 
-const Default$d = {
+const Default$e = {
   datepickerTheme: null,
   // 'light', 'dark', 'auto' - explicit theme for datepicker popover only
   dateMin: null,
@@ -4847,7 +4881,7 @@ const Default$d = {
   // 'left', 'center', 'right', 'auto'
   vcpOptions: {} // Pass-through for any VCP option
 };
-const DefaultType$d = {
+const DefaultType$e = {
   datepickerTheme: '(null|string)',
   dateMin: '(null|string|number|object)',
   dateMax: '(null|string|number|object)',
@@ -4878,13 +4912,13 @@ class Datepicker extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$d;
+    return Default$e;
   }
   static get DefaultType() {
-    return DefaultType$d;
+    return DefaultType$e;
   }
   static get NAME() {
-    return NAME$e;
+    return NAME$f;
   }
 
   // Public
@@ -5126,7 +5160,7 @@ class Datepicker extends BaseComponent {
         this._displayElement.textContent = formattedDate;
       }
     }
-    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$2, {
       dates: selectedDates,
       event
     });
@@ -5218,7 +5252,7 @@ EventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE$6, functi
 });
 
 // Auto-initialize inline datepickers on DOMContentLoaded
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$b}${DATA_API_KEY$6}`, () => {
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$c}${DATA_API_KEY$7}`, () => {
   for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`)) {
     Datepicker.getOrCreateInstance(element);
   }
@@ -5489,24 +5523,24 @@ class DialogBase extends BaseComponent {
  * Constants
  */
 
-const NAME$d = 'dialog';
-const DATA_KEY$9 = 'bs.dialog';
-const EVENT_KEY$a = `.${DATA_KEY$9}`;
-const DATA_API_KEY$5 = '.data-api';
-const EVENT_SHOW$3 = `show${EVENT_KEY$a}`;
-const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$a}`;
-const EVENT_CANCEL = `cancel${EVENT_KEY$a}`;
-const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$a}${DATA_API_KEY$5}`;
+const NAME$e = 'dialog';
+const DATA_KEY$a = 'bs.dialog';
+const EVENT_KEY$b = `.${DATA_KEY$a}`;
+const DATA_API_KEY$6 = '.data-api';
+const EVENT_SHOW$3 = `show${EVENT_KEY$b}`;
+const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$b}`;
+const EVENT_CANCEL = `cancel${EVENT_KEY$b}`;
+const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
 const CLASS_NAME_NONMODAL = 'dialog-nonmodal';
 const CLASS_NAME_INSTANT = 'dialog-instant';
 const CLASS_NAME_SWAP_IN = 'dialog-swap-in';
 const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="dialog"]';
-const Default$c = {
+const Default$d = {
   backdrop: true,
   keyboard: true,
   modal: true
 };
-const DefaultType$c = {
+const DefaultType$d = {
   backdrop: '(boolean|string)',
   keyboard: 'boolean',
   modal: 'boolean'
@@ -5519,13 +5553,13 @@ const DefaultType$c = {
 class Dialog extends DialogBase {
   // Getters
   static get Default() {
-    return Default$c;
+    return Default$d;
   }
   static get DefaultType() {
-    return DefaultType$c;
+    return DefaultType$d;
   }
   static get NAME() {
-    return NAME$d;
+    return NAME$e;
   }
 
   // Public
@@ -5608,7 +5642,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$5, functi
     const newDialog = Dialog.getOrCreateInstance(target, config);
     target.classList.add(CLASS_NAME_SWAP_IN);
     newDialog.show(this);
-    EventHandler.one(target, `shown${EVENT_KEY$a}`, () => {
+    EventHandler.one(target, `shown${EVENT_KEY$b}`, () => {
       target.classList.remove(CLASS_NAME_SWAP_IN);
     });
     const currentInstance = Dialog.getInstance(currentDialog);
@@ -5642,11 +5676,11 @@ enableDismissTrigger(Dialog);
  * Constants
  */
 
-const NAME$c = 'navoverflow';
-const DATA_KEY$8 = 'bs.navoverflow';
-const EVENT_KEY$9 = `.${DATA_KEY$8}`;
-const EVENT_UPDATE = `update${EVENT_KEY$9}`;
-const EVENT_OVERFLOW = `overflow${EVENT_KEY$9}`;
+const NAME$d = 'navoverflow';
+const DATA_KEY$9 = 'bs.navoverflow';
+const EVENT_KEY$a = `.${DATA_KEY$9}`;
+const EVENT_UPDATE = `update${EVENT_KEY$a}`;
+const EVENT_OVERFLOW = `overflow${EVENT_KEY$a}`;
 const CLASS_NAME_OVERFLOW = 'nav-overflow';
 const CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu';
 const CLASS_NAME_HIDDEN = 'd-none';
@@ -5656,7 +5690,7 @@ const SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle';
 const SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu';
 const SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]';
 const CLASS_NAME_KEEP = 'nav-overflow-keep';
-const Default$b = {
+const Default$c = {
   collapseBelow: 0,
   iconPlacement: 'start',
   menuPlacement: 'bottom-end',
@@ -5664,7 +5698,7 @@ const Default$b = {
   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 // Minimum items to keep visible before showing overflow
 };
-const DefaultType$b = {
+const DefaultType$c = {
   collapseBelow: '(number|string)',
   iconPlacement: 'string',
   menuPlacement: 'string',
@@ -5692,13 +5726,13 @@ class NavOverflow extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$b;
+    return Default$c;
   }
   static get DefaultType() {
-    return DefaultType$b;
+    return DefaultType$c;
   }
   static get NAME() {
-    return NAME$c;
+    return NAME$d;
   }
 
   // Public
@@ -5941,25 +5975,25 @@ EventHandler.on(document, 'DOMContentLoaded', () => {
  * Constants
  */
 
-const NAME$b = 'swipe';
-const EVENT_KEY$8 = '.bs.swipe';
-const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$8}`;
-const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$8}`;
-const EVENT_TOUCHEND = `touchend${EVENT_KEY$8}`;
-const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$8}`;
-const EVENT_POINTERUP = `pointerup${EVENT_KEY$8}`;
+const NAME$c = 'swipe';
+const EVENT_KEY$9 = '.bs.swipe';
+const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
+const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
+const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
+const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
+const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
 const POINTER_TYPE_TOUCH = 'touch';
 const POINTER_TYPE_PEN = 'pen';
 const CLASS_NAME_POINTER_EVENT = 'pointer-event';
 const SWIPE_THRESHOLD = 40;
-const Default$a = {
+const Default$b = {
   endCallback: null,
   leftCallback: null,
   rightCallback: null,
   upCallback: null,
   downCallback: null
 };
-const DefaultType$a = {
+const DefaultType$b = {
   endCallback: '(function|null)',
   leftCallback: '(function|null)',
   rightCallback: '(function|null)',
@@ -5987,18 +6021,18 @@ class Swipe extends Config {
 
   // Getters
   static get Default() {
-    return Default$a;
+    return Default$b;
   }
   static get DefaultType() {
-    return DefaultType$a;
+    return DefaultType$b;
   }
   static get NAME() {
-    return NAME$b;
+    return NAME$c;
   }
 
   // Public
   dispose() {
-    EventHandler.off(this._element, EVENT_KEY$8);
+    EventHandler.off(this._element, EVENT_KEY$9);
   }
 
   // Private
@@ -6090,21 +6124,21 @@ class Swipe extends Config {
  * Constants
  */
 
-const NAME$a = 'drawer';
-const DATA_KEY$7 = 'bs.drawer';
-const EVENT_KEY$7 = `.${DATA_KEY$7}`;
-const DATA_API_KEY$4 = '.data-api';
-const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$7}${DATA_API_KEY$4}`;
-const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$7}`;
-const EVENT_RESIZE = `resize${EVENT_KEY$7}`;
-const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
+const NAME$b = 'drawer';
+const DATA_KEY$8 = 'bs.drawer';
+const EVENT_KEY$8 = `.${DATA_KEY$8}`;
+const DATA_API_KEY$5 = '.data-api';
+const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
+const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$8}`;
+const EVENT_RESIZE = `resize${EVENT_KEY$8}`;
+const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
 const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="drawer"]';
-const Default$9 = {
+const Default$a = {
   backdrop: true,
   keyboard: true,
   scroll: false
 };
-const DefaultType$9 = {
+const DefaultType$a = {
   backdrop: '(boolean|string)',
   keyboard: 'boolean',
   scroll: 'boolean'
@@ -6122,13 +6156,13 @@ class Drawer extends DialogBase {
 
   // Getters
   static get Default() {
-    return Default$9;
+    return Default$a;
   }
   static get DefaultType() {
-    return DefaultType$9;
+    return DefaultType$a;
   }
   static get NAME() {
-    return NAME$a;
+    return NAME$b;
   }
 
   // Public
@@ -6242,14 +6276,14 @@ enableDismissTrigger(Drawer);
  * Constants
  */
 
-const NAME$9 = 'strength';
-const DATA_KEY$6 = 'bs.strength';
-const EVENT_KEY$6 = `.${DATA_KEY$6}`;
-const DATA_API_KEY$3 = '.data-api';
-const EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY$6}`;
+const NAME$a = 'strength';
+const DATA_KEY$7 = 'bs.strength';
+const EVENT_KEY$7 = `.${DATA_KEY$7}`;
+const DATA_API_KEY$4 = '.data-api';
+const EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY$7}`;
 const SELECTOR_DATA_STRENGTH = '[data-bs-strength]';
 const STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong'];
-const Default$8 = {
+const Default$9 = {
   input: null,
   // Selector or element for password input
   minLength: 8,
@@ -6273,7 +6307,7 @@ const Default$8 = {
   // weak ≤2, fair ≤4, good ≤6, strong >6
   scorer: null // Custom scoring function (password) => number
 };
-const DefaultType$8 = {
+const DefaultType$9 = {
   input: '(string|element|null)',
   minLength: 'number',
   messages: 'object',
@@ -6302,13 +6336,13 @@ class Strength extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$8;
+    return Default$9;
   }
   static get DefaultType() {
-    return DefaultType$8;
+    return DefaultType$9;
   }
   static get NAME() {
-    return NAME$9;
+    return NAME$a;
   }
 
   // Public
@@ -6454,7 +6488,7 @@ class Strength extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$6}${DATA_API_KEY$3}`, () => {
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$7}${DATA_API_KEY$4}`, () => {
   for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {
     Strength.getOrCreateInstance(element);
   }
@@ -6472,15 +6506,15 @@ EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$6}${DATA_API_KEY$3}`, ()
  * Constants
  */
 
-const NAME$8 = 'otpInput';
-const DATA_KEY$5 = 'bs.otpInput';
-const EVENT_KEY$5 = `.${DATA_KEY$5}`;
-const DATA_API_KEY$2 = '.data-api';
-const EVENT_COMPLETE = `complete${EVENT_KEY$5}`;
-const EVENT_INPUT = `input${EVENT_KEY$5}`;
-const EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY$5}${DATA_API_KEY$2}`;
+const NAME$9 = 'otpInput';
+const DATA_KEY$6 = 'bs.otpInput';
+const EVENT_KEY$6 = `.${DATA_KEY$6}`;
+const DATA_API_KEY$3 = '.data-api';
+const EVENT_COMPLETE = `complete${EVENT_KEY$6}`;
+const EVENT_INPUT$1 = `input${EVENT_KEY$6}`;
+const EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY$6}${DATA_API_KEY$3}`;
 const SELECTOR_DATA_OTP = '[data-bs-otp]';
-const SELECTOR_INPUT = 'input';
+const SELECTOR_INPUT$1 = 'input';
 
 // Events that should refresh the active-slot highlight as the caret moves
 const SYNC_EVENTS = ['blur', 'keyup', 'click', 'select'];
@@ -6511,14 +6545,14 @@ const TYPES = {
     filter: /[^A-Za-z]/g
   }
 };
-const Default$7 = {
+const Default$8 = {
   groups: null,
   length: null,
   mask: false,
   separator: '·',
   type: 'numeric'
 };
-const DefaultType$7 = {
+const DefaultType$8 = {
   groups: '(array|null)',
   length: '(number|null)',
   mask: 'boolean',
@@ -6533,7 +6567,7 @@ const DefaultType$7 = {
 class OtpInput extends BaseComponent {
   constructor(element, config) {
     super(element, config);
-    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element);
+    this._input = SelectorEngine.findOne(SELECTOR_INPUT$1, this._element);
     if (!this._input) {
       return;
     }
@@ -6548,13 +6582,13 @@ class OtpInput extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$7;
+    return Default$8;
   }
   static get DefaultType() {
-    return DefaultType$7;
+    return DefaultType$8;
   }
   static get NAME() {
-    return NAME$8;
+    return NAME$9;
   }
 
   // Public
@@ -6671,7 +6705,7 @@ class OtpInput extends BaseComponent {
       this._input.value = sanitized;
     }
     this._render();
-    EventHandler.trigger(this._element, EVENT_INPUT, {
+    EventHandler.trigger(this._element, EVENT_INPUT$1, {
       value: this._input.value
     });
     this._checkComplete();
@@ -6727,14 +6761,14 @@ EventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {
  * Constants
  */
 
-const NAME$7 = 'chips';
-const DATA_KEY$4 = 'bs.chips';
-const EVENT_KEY$4 = `.${DATA_KEY$4}`;
-const DATA_API_KEY$1 = '.data-api';
-const EVENT_ADD = `add${EVENT_KEY$4}`;
-const EVENT_REMOVE = `remove${EVENT_KEY$4}`;
-const EVENT_CHANGE = `change${EVENT_KEY$4}`;
-const EVENT_SELECT = `select${EVENT_KEY$4}`;
+const NAME$8 = 'chips';
+const DATA_KEY$5 = 'bs.chips';
+const EVENT_KEY$5 = `.${DATA_KEY$5}`;
+const DATA_API_KEY$2 = '.data-api';
+const EVENT_ADD = `add${EVENT_KEY$5}`;
+const EVENT_REMOVE = `remove${EVENT_KEY$5}`;
+const EVENT_CHANGE$1 = `change${EVENT_KEY$5}`;
+const EVENT_SELECT = `select${EVENT_KEY$5}`;
 const SELECTOR_DATA_CHIPS = '[data-bs-chips]';
 const SELECTOR_GHOST_INPUT = '.form-ghost';
 const SELECTOR_CHIP = '.chip';
@@ -6743,7 +6777,7 @@ const CLASS_NAME_CHIP = 'chip';
 const CLASS_NAME_CHIP_DISMISS = 'chip-dismiss';
 const CLASS_NAME_ACTIVE$2 = 'active';
 const DEFAULT_DISMISS_ICON = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>';
-const Default$6 = {
+const Default$7 = {
   separator: ',',
   allowDuplicates: false,
   maxChips: null,
@@ -6752,7 +6786,7 @@ const Default$6 = {
   dismissIcon: DEFAULT_DISMISS_ICON,
   createOnBlur: true
 };
-const DefaultType$6 = {
+const DefaultType$7 = {
   separator: '(string|null)',
   allowDuplicates: 'boolean',
   maxChips: '(number|null)',
@@ -6783,13 +6817,13 @@ class Chips extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$6;
+    return Default$7;
   }
   static get DefaultType() {
-    return DefaultType$6;
+    return DefaultType$7;
   }
   static get NAME() {
-    return NAME$7;
+    return NAME$8;
   }
 
   // Public
@@ -6818,7 +6852,7 @@ class Chips extends BaseComponent {
     const chip = this._createChip(trimmedValue);
     this._element.insertBefore(chip, this._input);
     this._chips.push(trimmedValue);
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
       values: this.getValues()
     });
     return chip;
@@ -6854,7 +6888,7 @@ class Chips extends BaseComponent {
     // Remove from DOM and array
     chip.remove();
     this._chips = this._chips.filter(v => v !== value);
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
       values: this.getValues()
     });
     return true;
@@ -6880,7 +6914,7 @@ class Chips extends BaseComponent {
     this._chips = [];
     this._selectedChips.clear();
     this._anchorChip = null;
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
       values: []
     });
   }
@@ -7283,7 +7317,7 @@ class Chips extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$4}${DATA_API_KEY$1}`, () => {
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$5}${DATA_API_KEY$2}`, () => {
   for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {
     Chips.getOrCreateInstance(element);
   }
@@ -7396,8 +7430,8 @@ function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
  * Constants
  */
 
-const NAME$6 = 'TemplateFactory';
-const Default$5 = {
+const NAME$7 = 'TemplateFactory';
+const Default$6 = {
   allowList: DefaultAllowlist,
   content: {},
   // { selector : text ,  selector2 : text2 , }
@@ -7407,7 +7441,7 @@ const Default$5 = {
   sanitizeFn: null,
   template: '<div></div>'
 };
-const DefaultType$5 = {
+const DefaultType$6 = {
   allowList: 'object',
   content: 'object',
   extraClass: '(string|function)',
@@ -7433,13 +7467,13 @@ class TemplateFactory extends Config {
 
   // Getters
   static get Default() {
-    return Default$5;
+    return Default$6;
   }
   static get DefaultType() {
-    return DefaultType$5;
+    return DefaultType$6;
   }
   static get NAME() {
-    return NAME$6;
+    return NAME$7;
   }
 
   // Public
@@ -7532,8 +7566,9 @@ class TemplateFactory extends Config {
  * Constants
  */
 
-const NAME$5 = 'tooltip';
+const NAME$6 = 'tooltip';
 const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
+const ESCAPE_KEY = 'Escape';
 const CLASS_NAME_FADE$2 = 'fade';
 const CLASS_NAME_MODAL = 'modal';
 const CLASS_NAME_SHOW$2 = 'show';
@@ -7555,6 +7590,7 @@ const EVENT_FOCUSIN$2 = 'focusin';
 const EVENT_FOCUSOUT$1 = 'focusout';
 const EVENT_MOUSEENTER$1 = 'mouseenter';
 const EVENT_MOUSELEAVE = 'mouseleave';
+const EVENT_KEYDOWN$1 = 'keydown';
 const AttachmentMap = {
   AUTO: 'auto',
   TOP: 'top',
@@ -7562,7 +7598,7 @@ const AttachmentMap = {
   BOTTOM: 'bottom',
   LEFT: isRTL$1() ? 'right' : 'left'
 };
-const Default$4 = {
+const Default$5 = {
   allowList: DefaultAllowlist,
   animation: true,
   boundary: 'clippingParents',
@@ -7581,7 +7617,7 @@ const Default$4 = {
   title: '',
   trigger: 'hover focus'
 };
-const DefaultType$4 = {
+const DefaultType$5 = {
   allowList: 'object',
   animation: 'boolean',
   boundary: '(string|element)',
@@ -7618,6 +7654,7 @@ class Tooltip extends BaseComponent {
     this._isHovered = null;
     this._activeTrigger = {};
     this._floatingCleanup = null;
+    this._keydownHandler = null;
     this._templateFactory = null;
     this._newContent = null;
     this._mediaQueryListeners = [];
@@ -7634,13 +7671,13 @@ class Tooltip extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$4;
+    return Default$5;
   }
   static get DefaultType() {
-    return DefaultType$4;
+    return DefaultType$5;
   }
   static get NAME() {
-    return NAME$5;
+    return NAME$6;
   }
 
   // Public
@@ -7665,6 +7702,7 @@ class Tooltip extends BaseComponent {
   }
   dispose() {
     clearTimeout(this._timeout);
+    this._removeEscapeListener();
     EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
     if (this._element.getAttribute('data-bs-original-title')) {
       this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
@@ -7703,6 +7741,9 @@ class Tooltip extends BaseComponent {
     await this._createFloating(tip);
     tip.classList.add(CLASS_NAME_SHOW$2);
 
+    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)
+    this._setEscapeListener();
+
     // 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
@@ -7729,6 +7770,7 @@ class Tooltip extends BaseComponent {
     if (hideEvent.defaultPrevented) {
       return;
     }
+    this._removeEscapeListener();
     const tip = this._getTipElement();
     tip.classList.remove(CLASS_NAME_SHOW$2);
 
@@ -8013,6 +8055,37 @@ class Tooltip extends BaseComponent {
     };
     EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
   }
+  _setEscapeListener() {
+    if (this._keydownHandler) {
+      return;
+    }
+    this._keydownHandler = event => {
+      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {
+        return;
+      }
+
+      // Dismiss the tooltip and consume the keystroke so it doesn't reach
+      // ancestor components (e.g. a parent dialog). This way the first Escape
+      // only closes the tooltip, and a subsequent one can close the dialog —
+      // matching the behavior of the dropdown menu.
+      event.preventDefault();
+      event.stopPropagation();
+      this.hide();
+    };
+
+    // Listen in the capture phase so this runs before the dialog's own keydown
+    // handler, and on the document so it works regardless of where focus is
+    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture
+    // phase for delegated listeners, so attach natively here.
+    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN$1, this._keydownHandler, true);
+  }
+  _removeEscapeListener() {
+    if (!this._keydownHandler) {
+      return;
+    }
+    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN$1, this._keydownHandler, true);
+    this._keydownHandler = null;
+  }
   _fixTitle() {
     const title = this._element.getAttribute('title');
     if (!title) {
@@ -8149,14 +8222,14 @@ EventHandler.on(document, EVENT_MOUSEENTER$1, SELECTOR_DATA_TOGGLE$3, initToolti
  * Constants
  */
 
-const NAME$4 = 'popover';
+const NAME$5 = 'popover';
 const SELECTOR_TITLE = '.popover-header';
 const SELECTOR_CONTENT = '.popover-body';
 const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="popover"]';
 const EVENT_CLICK$2 = 'click';
 const EVENT_FOCUSIN$1 = 'focusin';
 const EVENT_MOUSEENTER = 'mouseenter';
-const Default$3 = {
+const Default$4 = {
   ...Tooltip.Default,
   content: '',
   offset: [0, 8],
@@ -8164,7 +8237,7 @@ const Default$3 = {
   template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
   trigger: 'click'
 };
-const DefaultType$3 = {
+const DefaultType$4 = {
   ...Tooltip.DefaultType,
   content: '(null|string|element|function)'
 };
@@ -8176,13 +8249,13 @@ const DefaultType$3 = {
 class Popover extends Tooltip {
   // Getters
   static get Default() {
-    return Default$3;
+    return Default$4;
   }
   static get DefaultType() {
-    return DefaultType$3;
+    return DefaultType$4;
   }
   static get NAME() {
-    return NAME$4;
+    return NAME$5;
   }
 
   // Overrides
@@ -8229,6 +8302,209 @@ EventHandler.on(document, EVENT_CLICK$2, SELECTOR_DATA_TOGGLE$2, initPopover);
 EventHandler.on(document, EVENT_FOCUSIN$1, SELECTOR_DATA_TOGGLE$2, initPopover);
 EventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE$2, initPopover);
 
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap range.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME$4 = 'range';
+const DATA_KEY$4 = 'bs.range';
+const EVENT_KEY$4 = `.${DATA_KEY$4}`;
+const DATA_API_KEY$1 = '.data-api';
+const EVENT_CHANGED = `changed${EVENT_KEY$4}`;
+const EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY$4}${DATA_API_KEY$1}`;
+
+// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw
+const EVENT_INPUT = 'input';
+const EVENT_CHANGE = 'change';
+const SELECTOR_RANGE = '.form-range';
+const SELECTOR_INPUT = '.form-range-input';
+const CLASS_NAME_BUBBLE = 'form-range-bubble';
+const CLASS_NAME_TICKS = 'form-range-ticks';
+const CLASS_NAME_TICK = 'form-range-tick';
+const CLASS_NAME_TICK_LABEL = 'form-range-tick-label';
+
+// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the
+// plugin must write the prefixed names to interoperate with the rendered CSS.
+const PROPERTY_FILL = '--bs-range-fill';
+const Default$3 = {
+  bubble: false,
+  // Show a value bubble above the thumb
+  formatter: null // (value) => string, for the bubble and tick labels
+};
+const DefaultType$3 = {
+  bubble: '(boolean|null)',
+  formatter: '(function|null)'
+};
+
+/**
+ * Class definition
+ */
+
+class Range extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+
+    // BaseComponent bails (no `_element`) when the element can't be resolved
+    if (!this._element) {
+      return;
+    }
+    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element);
+    if (!this._input) {
+      return;
+    }
+    this._bubble = null;
+    this._bubbleText = null;
+    this._ticks = null;
+    this._updateHandler = () => this._update();
+    if (this._config.bubble) {
+      this._createBubble();
+    }
+    this._createTicks();
+    this._addEventListeners();
+    this._update();
+  }
+
+  // Getters
+  static get Default() {
+    return Default$3;
+  }
+  static get DefaultType() {
+    return DefaultType$3;
+  }
+  static get NAME() {
+    return NAME$4;
+  }
+
+  // Public
+  update() {
+    this._update();
+  }
+  dispose() {
+    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler);
+    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler);
+    this._bubble?.remove();
+    this._ticks?.remove();
+    super.dispose();
+  }
+
+  // Private
+  _configAfterMerge(config) {
+    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled
+    if (config.bubble === null) {
+      config.bubble = true;
+    }
+    return config;
+  }
+  _addEventListeners() {
+    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler);
+    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler);
+  }
+  _min() {
+    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min);
+  }
+  _max() {
+    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max);
+  }
+  _value() {
+    return Number.parseFloat(this._input.value);
+  }
+  _ratio() {
+    const span = this._max() - this._min();
+    return span > 0 ? (this._value() - this._min()) / span : 0;
+  }
+  _update() {
+    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS
+    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`);
+    if (this._bubbleText) {
+      this._bubbleText.textContent = this._format(this._value());
+    }
+    EventHandler.trigger(this._input, EVENT_CHANGED, {
+      value: this._value()
+    });
+  }
+  _format(value) {
+    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value);
+  }
+  _createBubble() {
+    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles
+    this._bubble = document.createElement('output');
+    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`;
+    this._bubble.setAttribute('aria-hidden', 'true');
+
+    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,
+    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.
+    const arrow = document.createElement('div');
+    arrow.className = 'tooltip-arrow';
+    this._bubbleText = document.createElement('div');
+    this._bubbleText.className = 'tooltip-inner';
+    this._bubble.append(arrow, this._bubbleText);
+    this._input.insertAdjacentElement('afterend', this._bubble);
+  }
+  _createTicks() {
+    const listId = this._input.getAttribute('list');
+    const datalist = listId ? document.getElementById(listId) : null;
+    if (!datalist) {
+      return;
+    }
+    const min = this._min();
+    const span = this._max() - min || 1;
+    const points = [];
+    for (const option of SelectorEngine.find('option', datalist)) {
+      const value = Number.parseFloat(option.value);
+      if (!Number.isNaN(value)) {
+        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks
+        const ratio = Math.min(Math.max((value - min) / span, 0), 1);
+        points.push({
+          ratio,
+          label: option.label
+        });
+      }
+    }
+    if (points.length === 0) {
+      return;
+    }
+    points.sort((a, b) => a.ratio - b.ratio);
+    this._ticks = document.createElement('div');
+    this._ticks.className = CLASS_NAME_TICKS;
+    this._ticks.setAttribute('aria-hidden', 'true');
+
+    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line
+    const stops = [0, ...points.map(point => point.ratio), 1];
+    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ');
+    for (const [index, point] of points.entries()) {
+      const tick = document.createElement('span');
+      tick.className = CLASS_NAME_TICK;
+      tick.style.gridColumnStart = `${index + 2}`;
+      if (point.label) {
+        const label = document.createElement('span');
+        label.className = CLASS_NAME_TICK_LABEL;
+        label.textContent = point.label;
+        tick.append(label);
+      }
+      this._ticks.append(tick);
+    }
+    this._element.append(this._ticks);
+  }
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {
+  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {
+    Range.getOrCreateInstance(element);
+  }
+});
+
 /**
  * --------------------------------------------------------------------------
  * Bootstrap scrollspy.js
@@ -8958,5 +9234,5 @@ class Toggler extends BaseComponent {
 
 eventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle');
 
-export { Alert, Button, Carousel, Chips, Collapse, Combobox, Datepicker, Dialog, Drawer, Menu, NavOverflow, OtpInput, Popover, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
+export { Alert, Button, Carousel, Chips, Collapse, Combobox, Datepicker, Dialog, Drawer, Menu, NavOverflow, OtpInput, Popover, Range, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
 //# sourceMappingURL=bootstrap.bundle.js.map
index 50a556823527f522628783d0343c7d74a936a6dc..557b47c54ba6ca321304d523dc263a7744b20fc9 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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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 [...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 [...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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// How many frames the scroll-settle watcher waits when no movement is ever\n// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before\n// it gives up and restores snapping anyway.\nconst SCROLL_SETTLE_MAX_FRAMES = 10\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    this._snapRestoreFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,\n    // but it also clamps *programmatic* scrolls to one snap point — which would\n    // break multi-slide jumps from an indicator click, `to()`, or wrapping from\n    // the last slide back to the first. Disable snapping for the duration of the\n    // programmatic scroll, then restore it once the scroll settles so the slide\n    // still rests precisely (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({\n      left,\n      top: 0,\n      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets\n      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would\n      // still animate. `'instant'` forces an immediate, motion-free jump.\n      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'\n    })\n    this._restoreSnapWhenSettled(targetLeft, index)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._viewport.scrollBy({\n      left: this._scrollDelta(clone),\n      top: 0,\n      behavior: 'smooth'\n    })\n\n    this._afterScrollSettles(() => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops\n  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps\n  // to the *nearest* snap point, so if we restored mid-animation the viewport\n  // could jump back to the slide we came from — most visible stepping to the\n  // first/last slide, where it looks like the control \"doesn't work\".\n  _restoreSnapWhenSettled(targetLeft, index) {\n    this._afterScrollSettles(() => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer && index !== undefined) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final ~1px settle landing\n      // exactly on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    }, targetLeft)\n  }\n\n  // Invoke `callback` once the viewport stops moving. We watch the scroll\n  // position across frames instead of relying on the `scrollend` event, which\n  // isn't available across our supported browsers yet.\n  //\n  // Crucially, we only start counting \"stable\" frames once the scroll has\n  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first\n  // frame or two, so naively treating those initial unchanged frames as\n  // \"settled\" would re-enable `mandatory` snapping mid-animation — which cancels\n  // the in-flight programmatic scroll and lands on the wrong slide (most visible\n  // in multi-item layouts). If the scroll never moves (delta clamped at an end,\n  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.\n  //\n  // When `targetLeft` is known we also finish the moment we arrive there, so the\n  // snap is restored exactly on the destination snap point and can't re-snap the\n  // viewport backwards (the failure mode where stepping to the first/last slide\n  // appears to do nothing).\n  _afterScrollSettles(callback, targetLeft) {\n    if (typeof requestAnimationFrame === 'undefined') {\n      callback()\n      return\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    let lastLeft = startLeft\n    let stableFrames = 0\n    let waited = 0\n    let hasMoved = false\n\n    const tick = () => {\n      const currentLeft = this._viewport.scrollLeft\n      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1\n\n      if (Math.abs(currentLeft - startLeft) > 1) {\n        hasMoved = true\n      }\n\n      // Only accrue stable frames after movement begins, so the pre-animation\n      // and ease-in frames don't prematurely count as settled.\n      if (hasMoved) {\n        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0\n      }\n\n      lastLeft = currentLeft\n      waited += 1\n\n      if (reachedTarget || (hasMoved && stableFrames >= 3) || (!hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES)) {\n        this._snapRestoreFrame = null\n        callback()\n        return\n      }\n\n      this._snapRestoreFrame = requestAnimationFrame(tick)\n    }\n\n    this._snapRestoreFrame = requestAnimationFrame(tick)\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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};\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}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? '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.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\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  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\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 * 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// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\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 platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\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 resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\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: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\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 * 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 platform.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 platform.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        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.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 platform.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        platform\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 platform.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 platform.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}\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) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\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 isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\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 (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(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  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\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 (isOffsetParentAnElement) {\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\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 && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || 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 firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: 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) : []), ...(floating ? 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 && floating) {\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    if (floating) {\n      resizeObserver.observe(floating);\n    }\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 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 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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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 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 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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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","keys","getAny","values","next","value","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","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","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","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_SETTLE_MAX_FRAMES","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_snapRestoreFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","scrollBy","top","behavior","_restoreSnapWhenSettled","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","_afterScrollSettles","requestAnimationFrame","startLeft","lastLeft","stableFrames","waited","hasMoved","tick","currentLeft","reachedTarget","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","progress","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","complete","capitalizedDimension","scrollSize","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","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","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","defaultConfig","_getContainer","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","clientX","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","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","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","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","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","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","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","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","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","closestDialog","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","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","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","scrollTop","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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","x_google_ignoreList":[12,13,14,15,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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\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(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, 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 [...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 [...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  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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};\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}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? '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.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\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  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\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 * 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// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\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 platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\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 resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\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: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\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 * 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 platform.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 platform.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        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.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 platform.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        platform\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 platform.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 platform.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}\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) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\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 isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\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 (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(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  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\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 (isOffsetParentAnElement) {\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\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 && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || 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 firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: 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) : []), ...(floating ? 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 && floating) {\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    if (floating) {\n      resizeObserver.observe(floating);\n    }\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 // menu wrapper\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    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\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 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    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\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 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    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\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    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\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      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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 ESCAPE_KEY = 'Escape'\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'\nconst EVENT_KEYDOWN = 'keydown'\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._keydownHandler = 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    this._removeEscapeListener()\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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\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 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    this._removeEscapeListener()\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 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  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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 range.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 = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\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._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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","keys","getAny","values","next","value","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","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","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","existingInstance","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","complete","capitalizedDimension","scrollSize","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","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","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","fallbackPlacements","_getFallbackPlacements","fallbackMap","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","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","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","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","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","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","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","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","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTop","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAMA,UAAU,GAAG,IAAIC,GAAG,EAAE;AAE5B,aAAe;AACbC,EAAAA,GAAGA,CAACC,OAAO,EAAEC,GAAG,EAAEC,QAAQ,EAAE;AAC1B,IAAA,IAAI,CAACL,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;MAC5BH,UAAU,CAACE,GAAG,CAACC,OAAO,EAAE,IAAIF,GAAG,EAAE,CAAC;AACpC,IAAA;AAEA,IAAA,MAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC;;AAE3C;AACA;AACA,IAAA,IAAI,CAACI,WAAW,CAACD,GAAG,CAACF,GAAG,CAAC,IAAIG,WAAW,CAACE,IAAI,KAAK,CAAC,EAAE;AACnD;AACAC,MAAAA,OAAO,CAACC,KAAK,CAAC,CAAA,4EAAA,EAA+E,CAAC,GAAGJ,WAAW,CAACK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3H,MAAA;AACF,IAAA;AAEAL,IAAAA,WAAW,CAACL,GAAG,CAACE,GAAG,EAAEC,QAAQ,CAAC;EAChC,CAAC;AAEDG,EAAAA,GAAGA,CAACL,OAAO,EAAEC,GAAG,EAAE;AAChB,IAAA,IAAIJ,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;AAC3B,MAAA,OAAOH,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC,CAACK,GAAG,CAACJ,GAAG,CAAC,IAAI,IAAI;AACjD,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAEDS,MAAMA,CAACV,OAAO,EAAE;AACd,IAAA,IAAIH,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;AAC3B,MAAA,OAAOH,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC,CAACW,MAAM,EAAE,CAACC,IAAI,EAAE,CAACC,KAAK,IAAI,IAAI;AAC9D,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;AAEDC,EAAAA,MAAMA,CAACd,OAAO,EAAEC,GAAG,EAAE;AACnB,IAAA,IAAI,CAACJ,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;AAC5B,MAAA;AACF,IAAA;AAEA,IAAA,MAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC;AAE3CI,IAAAA,WAAW,CAACW,MAAM,CAACd,GAAG,CAAC;;AAEvB;AACA,IAAA,IAAIG,WAAW,CAACE,IAAI,KAAK,CAAC,EAAE;AAC1BT,MAAAA,UAAU,CAACkB,MAAM,CAACf,OAAO,CAAC;AAC5B,IAAA;AACF,EAAA;AACF,CAAC;;AC9DD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAMgB,cAAc,GAAG,oBAAoB;AAC3C,MAAMC,cAAc,GAAG,MAAM;AAC7B,MAAMC,aAAa,GAAG,QAAQ;AAC9B,MAAMC,aAAa,GAAG,EAAE,CAAA;AACxB,IAAIC,QAAQ,GAAG,CAAC;AAChB,MAAMC,YAAY,GAAG;AACnBC,EAAAA,UAAU,EAAE,WAAW;AACvBC,EAAAA,UAAU,EAAE;AACd,CAAC;AAED,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAAC,CAC3B,OAAO,EACP,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,QAAQ,CACT,CAAC;;AAEF;AACA;AACA;;AAEA,SAASC,YAAYA,CAAC1B,OAAO,EAAE2B,GAAG,EAAE;AAClC,EAAA,OAAQA,GAAG,IAAI,CAAA,EAAGA,GAAG,KAAKP,QAAQ,EAAE,CAAA,CAAE,IAAKpB,OAAO,CAACoB,QAAQ,IAAIA,QAAQ,EAAE;AAC3E;AAEA,SAASQ,gBAAgBA,CAAC5B,OAAO,EAAE;AACjC,EAAA,MAAM2B,GAAG,GAAGD,YAAY,CAAC1B,OAAO,CAAC;EAEjCA,OAAO,CAACoB,QAAQ,GAAGO,GAAG;EACtBR,aAAa,CAACQ,GAAG,CAAC,GAAGR,aAAa,CAACQ,GAAG,CAAC,IAAI,EAAE;EAE7C,OAAOR,aAAa,CAACQ,GAAG,CAAC;AAC3B;AAEA,SAASE,gBAAgBA,CAAC7B,OAAO,EAAE8B,EAAE,EAAE;AACrC,EAAA,OAAO,SAASC,OAAOA,CAACC,KAAK,EAAE;IAC7BC,UAAU,CAACD,KAAK,EAAE;AAAEE,MAAAA,cAAc,EAAElC;AAAQ,KAAC,CAAC;IAE9C,IAAI+B,OAAO,CAACI,MAAM,EAAE;MAClBC,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAEgC,KAAK,CAACM,IAAI,EAAER,EAAE,CAAC;AAC3C,IAAA;IAEA,OAAOA,EAAE,CAACS,KAAK,CAACvC,OAAO,EAAE,CAACgC,KAAK,CAAC,CAAC;EACnC,CAAC;AACH;AAEA,SAASQ,0BAA0BA,CAACxC,OAAO,EAAEyC,QAAQ,EAAEX,EAAE,EAAE;AACzD,EAAA,OAAO,SAASC,OAAOA,CAACC,KAAK,EAAE;AAC7B,IAAA,MAAMU,WAAW,GAAG1C,OAAO,CAAC2C,gBAAgB,CAACF,QAAQ,CAAC;AAEtD,IAAA,KAAK,IAAI;AAAEG,MAAAA;AAAO,KAAC,GAAGZ,KAAK,EAAEY,MAAM,IAAIA,MAAM,KAAK,IAAI,EAAEA,MAAM,GAAGA,MAAM,CAACC,UAAU,EAAE;AAClF,MAAA,KAAK,MAAMC,UAAU,IAAIJ,WAAW,EAAE;QACpC,IAAII,UAAU,KAAKF,MAAM,EAAE;AACzB,UAAA;AACF,QAAA;QAEAX,UAAU,CAACD,KAAK,EAAE;AAAEE,UAAAA,cAAc,EAAEU;AAAO,SAAC,CAAC;QAE7C,IAAIb,OAAO,CAACI,MAAM,EAAE;AAClBC,UAAAA,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAEgC,KAAK,CAACM,IAAI,EAAEG,QAAQ,EAAEX,EAAE,CAAC;AACrD,QAAA;QAEA,OAAOA,EAAE,CAACS,KAAK,CAACK,MAAM,EAAE,CAACZ,KAAK,CAAC,CAAC;AAClC,MAAA;AACF,IAAA;EACF,CAAC;AACH;AAEA,SAASe,WAAWA,CAACC,MAAM,EAAEC,QAAQ,EAAEC,kBAAkB,GAAG,IAAI,EAAE;EAChE,OAAOC,MAAM,CAACxC,MAAM,CAACqC,MAAM,CAAC,CACzBI,IAAI,CAACpB,KAAK,IAAIA,KAAK,CAACiB,QAAQ,KAAKA,QAAQ,IAAIjB,KAAK,CAACkB,kBAAkB,KAAKA,kBAAkB,CAAC;AAClG;AAEA,SAASG,mBAAmBA,CAACC,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,EAAE;AAC3E,EAAA,MAAMC,WAAW,GAAG,OAAOzB,OAAO,KAAK,QAAQ;EAC/C,MAAMkB,QAAQ,GAAGO,WAAW,GAAGD,kBAAkB,GAAIxB,OAAO,IAAIwB,kBAAmB;AACnF,EAAA,IAAIE,SAAS,GAAGC,YAAY,CAACJ,iBAAiB,CAAC;AAE/C,EAAA,IAAI,CAAC9B,YAAY,CAACrB,GAAG,CAACsD,SAAS,CAAC,EAAE;AAChCA,IAAAA,SAAS,GAAGH,iBAAiB;AAC/B,EAAA;AAEA,EAAA,OAAO,CAACE,WAAW,EAAEP,QAAQ,EAAEQ,SAAS,CAAC;AAC3C;AAEA,SAASE,UAAUA,CAAC3D,OAAO,EAAEsD,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,EAAEpB,MAAM,EAAE;AACnF,EAAA,IAAI,OAAOmB,iBAAiB,KAAK,QAAQ,IAAI,CAACtD,OAAO,EAAE;AACrD,IAAA;AACF,EAAA;AAEA,EAAA,IAAI,CAACwD,WAAW,EAAEP,QAAQ,EAAEQ,SAAS,CAAC,GAAGJ,mBAAmB,CAACC,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,CAAC;;AAE5G;AACA;EACA,IAAID,iBAAiB,IAAIjC,YAAY,EAAE;IACrC,MAAMuC,YAAY,GAAG9B,EAAE,IAAI;MACzB,OAAO,UAAUE,KAAK,EAAE;QACtB,IAAI,CAACA,KAAK,CAAC6B,aAAa,IAAK7B,KAAK,CAAC6B,aAAa,KAAK7B,KAAK,CAACE,cAAc,IAAI,CAACF,KAAK,CAACE,cAAc,CAAC4B,QAAQ,CAAC9B,KAAK,CAAC6B,aAAa,CAAE,EAAE;AACjI,UAAA,OAAO/B,EAAE,CAACiC,IAAI,CAAC,IAAI,EAAE/B,KAAK,CAAC;AAC7B,QAAA;MACF,CAAC;IACH,CAAC;AAEDiB,IAAAA,QAAQ,GAAGW,YAAY,CAACX,QAAQ,CAAC;AACnC,EAAA;AAEA,EAAA,MAAMD,MAAM,GAAGpB,gBAAgB,CAAC5B,OAAO,CAAC;AACxC,EAAA,MAAMgE,QAAQ,GAAGhB,MAAM,CAACS,SAAS,CAAC,KAAKT,MAAM,CAACS,SAAS,CAAC,GAAG,EAAE,CAAC;AAC9D,EAAA,MAAMQ,gBAAgB,GAAGlB,WAAW,CAACiB,QAAQ,EAAEf,QAAQ,EAAEO,WAAW,GAAGzB,OAAO,GAAG,IAAI,CAAC;AAEtF,EAAA,IAAIkC,gBAAgB,EAAE;AACpBA,IAAAA,gBAAgB,CAAC9B,MAAM,GAAG8B,gBAAgB,CAAC9B,MAAM,IAAIA,MAAM;AAE3D,IAAA;AACF,EAAA;AAEA,EAAA,MAAMR,GAAG,GAAGD,YAAY,CAACuB,QAAQ,EAAEK,iBAAiB,CAACY,OAAO,CAAClD,cAAc,EAAE,EAAE,CAAC,CAAC;AACjF,EAAA,MAAMc,EAAE,GAAG0B,WAAW,GACpBhB,0BAA0B,CAACxC,OAAO,EAAE+B,OAAO,EAAEkB,QAAQ,CAAC,GACtDpB,gBAAgB,CAAC7B,OAAO,EAAEiD,QAAQ,CAAC;AAErCnB,EAAAA,EAAE,CAACoB,kBAAkB,GAAGM,WAAW,GAAGzB,OAAO,GAAG,IAAI;EACpDD,EAAE,CAACmB,QAAQ,GAAGA,QAAQ;EACtBnB,EAAE,CAACK,MAAM,GAAGA,MAAM;EAClBL,EAAE,CAACV,QAAQ,GAAGO,GAAG;AACjBqC,EAAAA,QAAQ,CAACrC,GAAG,CAAC,GAAGG,EAAE;EAElB9B,OAAO,CAACmE,gBAAgB,CAACV,SAAS,EAAE3B,EAAE,EAAE0B,WAAW,CAAC;AACtD;AAEA,SAASY,aAAaA,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAE1B,OAAO,EAAEmB,kBAAkB,EAAE;AAC9E,EAAA,MAAMpB,EAAE,GAAGiB,WAAW,CAACC,MAAM,CAACS,SAAS,CAAC,EAAE1B,OAAO,EAAEmB,kBAAkB,CAAC;EAEtE,IAAI,CAACpB,EAAE,EAAE;AACP,IAAA;AACF,EAAA;EAEA9B,OAAO,CAACqE,mBAAmB,CAACZ,SAAS,EAAE3B,EAAE,EAAEwC,OAAO,CAACpB,kBAAkB,CAAC,CAAC;EACvE,OAAOF,MAAM,CAACS,SAAS,CAAC,CAAC3B,EAAE,CAACV,QAAQ,CAAC;AACvC;AAEA,SAASmD,wBAAwBA,CAACvE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAEe,SAAS,EAAE;EACvE,MAAMC,iBAAiB,GAAGzB,MAAM,CAACS,SAAS,CAAC,IAAI,EAAE;AAEjD,EAAA,KAAK,MAAM,CAACiB,UAAU,EAAE1C,KAAK,CAAC,IAAImB,MAAM,CAACwB,OAAO,CAACF,iBAAiB,CAAC,EAAE;AACnE,IAAA,IAAIC,UAAU,CAACE,QAAQ,CAACJ,SAAS,CAAC,EAAE;AAClCJ,MAAAA,aAAa,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAEzB,KAAK,CAACiB,QAAQ,EAAEjB,KAAK,CAACkB,kBAAkB,CAAC;AACrF,IAAA;AACF,EAAA;AACF;AAEA,SAASQ,YAAYA,CAAC1B,KAAK,EAAE;AAC3B;EACAA,KAAK,GAAGA,KAAK,CAACkC,OAAO,CAACjD,cAAc,EAAE,EAAE,CAAC;AACzC,EAAA,OAAOI,YAAY,CAACW,KAAK,CAAC,IAAIA,KAAK;AACrC;AAEA,MAAMI,YAAY,GAAG;EACnByC,EAAEA,CAAC7E,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE;IAC9CI,UAAU,CAAC3D,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE,KAAK,CAAC;EAChE,CAAC;EAEDuB,GAAGA,CAAC9E,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE;IAC/CI,UAAU,CAAC3D,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE,IAAI,CAAC;EAC/D,CAAC;EAEDlB,GAAGA,CAACrC,OAAO,EAAEsD,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,EAAE;AAC3D,IAAA,IAAI,OAAOD,iBAAiB,KAAK,QAAQ,IAAI,CAACtD,OAAO,EAAE;AACrD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,CAACwD,WAAW,EAAEP,QAAQ,EAAEQ,SAAS,CAAC,GAAGJ,mBAAmB,CAACC,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,CAAC;AAC9G,IAAA,MAAMwB,WAAW,GAAGtB,SAAS,KAAKH,iBAAiB;AACnD,IAAA,MAAMN,MAAM,GAAGpB,gBAAgB,CAAC5B,OAAO,CAAC;IACxC,MAAMyE,iBAAiB,GAAGzB,MAAM,CAACS,SAAS,CAAC,IAAI,EAAE;AACjD,IAAA,MAAMuB,WAAW,GAAG1B,iBAAiB,CAAC2B,UAAU,CAAC,GAAG,CAAC;AAErD,IAAA,IAAI,OAAOhC,QAAQ,KAAK,WAAW,EAAE;AACnC;MACA,IAAI,CAACE,MAAM,CAAC1C,IAAI,CAACgE,iBAAiB,CAAC,CAACS,MAAM,EAAE;AAC1C,QAAA;AACF,MAAA;AAEAd,MAAAA,aAAa,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAER,QAAQ,EAAEO,WAAW,GAAGzB,OAAO,GAAG,IAAI,CAAC;AACjF,MAAA;AACF,IAAA;AAEA,IAAA,IAAIiD,WAAW,EAAE;MACf,KAAK,MAAMG,YAAY,IAAIhC,MAAM,CAAC1C,IAAI,CAACuC,MAAM,CAAC,EAAE;AAC9CuB,QAAAA,wBAAwB,CAACvE,OAAO,EAAEgD,MAAM,EAAEmC,YAAY,EAAE7B,iBAAiB,CAAC8B,KAAK,CAAC,CAAC,CAAC,CAAC;AACrF,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAM,CAACC,WAAW,EAAErD,KAAK,CAAC,IAAImB,MAAM,CAACwB,OAAO,CAACF,iBAAiB,CAAC,EAAE;MACpE,MAAMC,UAAU,GAAGW,WAAW,CAACnB,OAAO,CAAChD,aAAa,EAAE,EAAE,CAAC;MAEzD,IAAI,CAAC6D,WAAW,IAAIzB,iBAAiB,CAACsB,QAAQ,CAACF,UAAU,CAAC,EAAE;AAC1DN,QAAAA,aAAa,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAEzB,KAAK,CAACiB,QAAQ,EAAEjB,KAAK,CAACkB,kBAAkB,CAAC;AACrF,MAAA;AACF,IAAA;EACF,CAAC;AAEDoC,EAAAA,OAAOA,CAACtF,OAAO,EAAEgC,KAAK,EAAEuD,IAAI,EAAE;AAC5B,IAAA,IAAI,OAAOvD,KAAK,KAAK,QAAQ,IAAI,CAAChC,OAAO,EAAE;AACzC,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAMwF,GAAG,GAAGvD,UAAU,CAAC,IAAIwD,KAAK,CAACzD,KAAK,EAAE;AAAE0D,MAAAA,OAAO,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;KAAM,CAAC,EAAEJ,IAAI,CAAC;AACnFvF,IAAAA,OAAO,CAAC4F,aAAa,CAACJ,GAAG,CAAC;AAC1B,IAAA,OAAOA,GAAG;AACZ,EAAA;AACF,CAAC;AAED,SAASvD,UAAUA,CAAC4D,GAAG,EAAEC,IAAI,GAAG,EAAE,EAAE;AAClC,EAAA,KAAK,MAAM,CAAC7F,GAAG,EAAEY,KAAK,CAAC,IAAIsC,MAAM,CAACwB,OAAO,CAACmB,IAAI,CAAC,EAAE;IAC/C,IAAI;AACFD,MAAAA,GAAG,CAAC5F,GAAG,CAAC,GAAGY,KAAK;AAClB,IAAA,CAAC,CAAC,MAAM;AACNsC,MAAAA,MAAM,CAAC4C,cAAc,CAACF,GAAG,EAAE5F,GAAG,EAAE;AAC9B+F,QAAAA,YAAY,EAAE,IAAI;AAClB3F,QAAAA,GAAGA,GAAG;AACJ,UAAA,OAAOQ,KAAK;AACd,QAAA;AACF,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEA,EAAA,OAAOgF,GAAG;AACZ;;ACzRA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASI,aAAaA,CAACpF,KAAK,EAAE;EAC5B,IAAIA,KAAK,KAAK,MAAM,EAAE;AACpB,IAAA,OAAO,IAAI;AACb,EAAA;EAEA,IAAIA,KAAK,KAAK,OAAO,EAAE;AACrB,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,IAAIA,KAAK,KAAKqF,MAAM,CAACrF,KAAK,CAAC,CAACsF,QAAQ,EAAE,EAAE;IACtC,OAAOD,MAAM,CAACrF,KAAK,CAAC;AACtB,EAAA;AAEA,EAAA,IAAIA,KAAK,KAAK,EAAE,IAAIA,KAAK,KAAK,MAAM,EAAE;AACpC,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AAC7B,IAAA,OAAOA,KAAK;AACd,EAAA;EAEA,IAAI;IACF,OAAOuF,IAAI,CAACC,KAAK,CAACC,kBAAkB,CAACzF,KAAK,CAAC,CAAC;AAC9C,EAAA,CAAC,CAAC,MAAM;AACN,IAAA,OAAOA,KAAK;AACd,EAAA;AACF;AAEA,SAAS0F,gBAAgBA,CAACtG,GAAG,EAAE;AAC7B,EAAA,OAAOA,GAAG,CAACiE,OAAO,CAAC,QAAQ,EAAEsC,GAAG,IAAI,CAAA,CAAA,EAAIA,GAAG,CAACC,WAAW,EAAE,EAAE,CAAC;AAC9D;AAEA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,gBAAgBA,CAAC3G,OAAO,EAAEC,GAAG,EAAEY,KAAK,EAAE;IACpCb,OAAO,CAAC4G,YAAY,CAAC,CAAA,QAAA,EAAWL,gBAAgB,CAACtG,GAAG,CAAC,CAAA,CAAE,EAAEY,KAAK,CAAC;EACjE,CAAC;AAEDgG,EAAAA,mBAAmBA,CAAC7G,OAAO,EAAEC,GAAG,EAAE;IAChCD,OAAO,CAAC8G,eAAe,CAAC,CAAA,QAAA,EAAWP,gBAAgB,CAACtG,GAAG,CAAC,CAAA,CAAE,CAAC;EAC7D,CAAC;EAED8G,iBAAiBA,CAAC/G,OAAO,EAAE;IACzB,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA,OAAO,EAAE;AACX,IAAA;IAEA,MAAMgH,UAAU,GAAG,EAAE;AACrB,IAAA,MAAMC,MAAM,GAAG9D,MAAM,CAAC1C,IAAI,CAACT,OAAO,CAACkH,OAAO,CAAC,CAACC,MAAM,CAAClH,GAAG,IAAIA,GAAG,CAACgF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAChF,GAAG,CAACgF,UAAU,CAAC,UAAU,CAAC,CAAC;AAE9G,IAAA,KAAK,MAAMhF,GAAG,IAAIgH,MAAM,EAAE;MACxB,IAAIG,OAAO,GAAGnH,GAAG,CAACiE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACpCkD,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACZ,WAAW,EAAE,GAAGW,OAAO,CAAChC,KAAK,CAAC,CAAC,CAAC;AAC5D4B,MAAAA,UAAU,CAACI,OAAO,CAAC,GAAGnB,aAAa,CAACjG,OAAO,CAACkH,OAAO,CAACjH,GAAG,CAAC,CAAC;AAC3D,IAAA;AAEA,IAAA,OAAO+G,UAAU;EACnB,CAAC;AAEDM,EAAAA,gBAAgBA,CAACtH,OAAO,EAAEC,GAAG,EAAE;AAC7B,IAAA,OAAOgG,aAAa,CAACjG,OAAO,CAACuH,YAAY,CAAC,CAAA,QAAA,EAAWhB,gBAAgB,CAACtG,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;AAChF,EAAA;AACF,CAAC;;ACpED;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMuH,OAAO,GAAG,SAAS;AACzB,MAAMC,uBAAuB,GAAG,IAAI;AACpC,MAAMC,cAAc,GAAG,eAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAGlF,QAAQ,IAAI;EAChC,IAAIA,QAAQ,IAAImF,MAAM,CAACC,GAAG,IAAID,MAAM,CAACC,GAAG,CAACC,MAAM,EAAE;AAC/C;IACArF,QAAQ,GAAGA,QAAQ,CAACyB,OAAO,CAAC,eAAe,EAAE,CAAC6D,KAAK,EAAEC,EAAE,KAAK,CAAA,CAAA,EAAIH,GAAG,CAACC,MAAM,CAACE,EAAE,CAAC,EAAE,CAAC;AACnF,EAAA;AAEA,EAAA,OAAOvF,QAAQ;AACjB,CAAC;;AAED;AACA,MAAMwF,MAAM,GAAGC,MAAM,IAAI;AACvB,EAAA,IAAIA,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKC,SAAS,EAAE;IAC3C,OAAO,CAAA,EAAGD,MAAM,CAAA,CAAE;AACpB,EAAA;EAEA,OAAO/E,MAAM,CAACiF,SAAS,CAACjC,QAAQ,CAACpC,IAAI,CAACmE,MAAM,CAAC,CAACH,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAACtB,WAAW,EAAE;AACrF,CAAC;;AAED;AACA;AACA;;AAEA,MAAM4B,MAAM,GAAGC,MAAM,IAAI;EACvB,GAAG;AACDA,IAAAA,MAAM,IAAIC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAGjB,OAAO,CAAC;AAC/C,EAAA,CAAC,QAAQkB,QAAQ,CAACC,cAAc,CAACL,MAAM,CAAC;AAExC,EAAA,OAAOA,MAAM;AACf,CAAC;AAED,MAAMM,gCAAgC,GAAG5I,OAAO,IAAI;EAClD,IAAI,CAACA,OAAO,EAAE;AACZ,IAAA,OAAO,CAAC;AACV,EAAA;;AAEA;EACA,IAAI;IAAE6I,kBAAkB;AAAEC,IAAAA;AAAgB,GAAC,GAAGlB,MAAM,CAACmB,gBAAgB,CAAC/I,OAAO,CAAC;AAE9E,EAAA,MAAMgJ,uBAAuB,GAAG9C,MAAM,CAAC+C,UAAU,CAACJ,kBAAkB,CAAC;AACrE,EAAA,MAAMK,oBAAoB,GAAGhD,MAAM,CAAC+C,UAAU,CAACH,eAAe,CAAC;;AAE/D;AACA,EAAA,IAAI,CAACE,uBAAuB,IAAI,CAACE,oBAAoB,EAAE;AACrD,IAAA,OAAO,CAAC;AACV,EAAA;;AAEA;EACAL,kBAAkB,GAAGA,kBAAkB,CAACM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrDL,eAAe,GAAGA,eAAe,CAACK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/C,EAAA,OAAO,CAACjD,MAAM,CAAC+C,UAAU,CAACJ,kBAAkB,CAAC,GAAG3C,MAAM,CAAC+C,UAAU,CAACH,eAAe,CAAC,IAAIrB,uBAAuB;AAC/G,CAAC;AAED,MAAM2B,oBAAoB,GAAGpJ,OAAO,IAAI;EACtCA,OAAO,CAAC4F,aAAa,CAAC,IAAIH,KAAK,CAACiC,cAAc,CAAC,CAAC;AAClD,CAAC;AAED,MAAM2B,WAAS,GAAGnB,MAAM,IAAI;AAC1B,EAAA,IAAI,CAACA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AACzC,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,OAAO,OAAOA,MAAM,CAACoB,QAAQ,KAAK,WAAW;AAC/C,CAAC;AAED,MAAMC,UAAU,GAAGrB,MAAM,IAAI;AAC3B,EAAA,IAAImB,WAAS,CAACnB,MAAM,CAAC,EAAE;AACrB,IAAA,OAAOA,MAAM;AACf,EAAA;EAEA,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,CAAChD,MAAM,GAAG,CAAC,EAAE;IACnD,OAAOwD,QAAQ,CAACc,aAAa,CAAC7B,aAAa,CAACO,MAAM,CAAC,CAAC;AACtD,EAAA;AAEA,EAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAMuB,SAAS,GAAGzJ,OAAO,IAAI;AAC3B,EAAA,IAAI,CAACqJ,WAAS,CAACrJ,OAAO,CAAC,IAAIA,OAAO,CAAC0J,cAAc,EAAE,CAACxE,MAAM,KAAK,CAAC,EAAE;AAChE,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,MAAMyE,gBAAgB,GAAGZ,gBAAgB,CAAC/I,OAAO,CAAC,CAAC4J,gBAAgB,CAAC,YAAY,CAAC,KAAK,SAAS;AAC/F;AACA,EAAA,MAAMC,aAAa,GAAG7J,OAAO,CAAC8J,OAAO,CAAC,qBAAqB,CAAC;EAE5D,IAAI,CAACD,aAAa,EAAE;AAClB,IAAA,OAAOF,gBAAgB;AACzB,EAAA;EAEA,IAAIE,aAAa,KAAK7J,OAAO,EAAE;AAC7B,IAAA,MAAM+J,OAAO,GAAG/J,OAAO,CAAC8J,OAAO,CAAC,SAAS,CAAC;AAC1C,IAAA,IAAIC,OAAO,IAAIA,OAAO,CAAClH,UAAU,KAAKgH,aAAa,EAAE;AACnD,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,IAAIE,OAAO,KAAK,IAAI,EAAE;AACpB,MAAA,OAAO,KAAK;AACd,IAAA;AACF,EAAA;AAEA,EAAA,OAAOJ,gBAAgB;AACzB,CAAC;AAED,MAAMK,UAAU,GAAGhK,OAAO,IAAI;EAC5B,IAAI,CAACA,OAAO,IAAIA,OAAO,CAACsJ,QAAQ,KAAKW,IAAI,CAACC,YAAY,EAAE;AACtD,IAAA,OAAO,IAAI;AACb,EAAA;EAEA,IAAIlK,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC1C,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,IAAI,OAAO9D,OAAO,CAACoK,QAAQ,KAAK,WAAW,EAAE;IAC3C,OAAOpK,OAAO,CAACoK,QAAQ;AACzB,EAAA;AAEA,EAAA,OAAOpK,OAAO,CAACqK,YAAY,CAAC,UAAU,CAAC,IAAIrK,OAAO,CAACuH,YAAY,CAAC,UAAU,CAAC,KAAK,OAAO;AACzF,CAAC;AAED,MAAM+C,cAAc,GAAGtK,OAAO,IAAI;AAChC,EAAA,IAAI,CAAC0I,QAAQ,CAAC6B,eAAe,CAACC,YAAY,EAAE;AAC1C,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,IAAI,OAAOxK,OAAO,CAACyK,WAAW,KAAK,UAAU,EAAE;AAC7C,IAAA,MAAMC,IAAI,GAAG1K,OAAO,CAACyK,WAAW,EAAE;AAClC,IAAA,OAAOC,IAAI,YAAYC,UAAU,GAAGD,IAAI,GAAG,IAAI;AACjD,EAAA;EAEA,IAAI1K,OAAO,YAAY2K,UAAU,EAAE;AACjC,IAAA,OAAO3K,OAAO;AAChB,EAAA;;AAEA;AACA,EAAA,IAAI,CAACA,OAAO,CAAC6C,UAAU,EAAE;AACvB,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,OAAOyH,cAAc,CAACtK,OAAO,CAAC6C,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM+H,IAAI,GAAGA,MAAM,CAAC,CAAC;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,MAAM,GAAG7K,OAAO,IAAI;EACxBA,OAAO,CAAC8K,YAAY,CAAA;AACtB,CAAC;AAqBD,MAAMC,OAAK,GAAGA,MAAMrC,QAAQ,CAAC6B,eAAe,CAACS,GAAG,KAAK,KAAK;AAE1D,MAAMC,OAAO,GAAGA,CAACC,gBAAgB,EAAE3F,IAAI,GAAG,EAAE,EAAE4F,YAAY,GAAGD,gBAAgB,KAAK;AAChF,EAAA,OAAO,OAAOA,gBAAgB,KAAK,UAAU,GAAGA,gBAAgB,CAACnH,IAAI,CAAC,GAAGwB,IAAI,CAAC,GAAG4F,YAAY;AAC/F,CAAC;AAED,MAAMC,sBAAsB,GAAGA,CAACC,QAAQ,EAAEC,iBAAiB,EAAEC,iBAAiB,GAAG,IAAI,KAAK;EACxF,IAAI,CAACA,iBAAiB,EAAE;IACtBN,OAAO,CAACI,QAAQ,CAAC;AACjB,IAAA;AACF,EAAA;EAEA,MAAMG,eAAe,GAAG,CAAC;AACzB,EAAA,MAAMC,gBAAgB,GAAG7C,gCAAgC,CAAC0C,iBAAiB,CAAC,GAAGE,eAAe;EAE9F,IAAIE,MAAM,GAAG,KAAK;EAElB,MAAM3J,OAAO,GAAGA,CAAC;AAAEa,IAAAA;AAAO,GAAC,KAAK;IAC9B,IAAIA,MAAM,KAAK0I,iBAAiB,EAAE;AAChC,MAAA;AACF,IAAA;AAEAI,IAAAA,MAAM,GAAG,IAAI;AACbJ,IAAAA,iBAAiB,CAACjH,mBAAmB,CAACqD,cAAc,EAAE3F,OAAO,CAAC;IAC9DkJ,OAAO,CAACI,QAAQ,CAAC;EACnB,CAAC;AAEDC,EAAAA,iBAAiB,CAACnH,gBAAgB,CAACuD,cAAc,EAAE3F,OAAO,CAAC;AAC3D4J,EAAAA,UAAU,CAAC,MAAM;IACf,IAAI,CAACD,MAAM,EAAE;MACXtC,oBAAoB,CAACkC,iBAAiB,CAAC;AACzC,IAAA;EACF,CAAC,EAAEG,gBAAgB,CAAC;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,oBAAoB,GAAGA,CAACC,IAAI,EAAEC,aAAa,EAAEC,aAAa,EAAEC,cAAc,KAAK;AACnF,EAAA,MAAMC,UAAU,GAAGJ,IAAI,CAAC3G,MAAM;AAC9B,EAAA,IAAIgH,KAAK,GAAGL,IAAI,CAACM,OAAO,CAACL,aAAa,CAAC;;AAEvC;AACA;AACA,EAAA,IAAII,KAAK,KAAK,EAAE,EAAE;AAChB,IAAA,OAAO,CAACH,aAAa,IAAIC,cAAc,GAAGH,IAAI,CAACI,UAAU,GAAG,CAAC,CAAC,GAAGJ,IAAI,CAAC,CAAC,CAAC;AAC1E,EAAA;AAEAK,EAAAA,KAAK,IAAIH,aAAa,GAAG,CAAC,GAAG,EAAE;AAE/B,EAAA,IAAIC,cAAc,EAAE;AAClBE,IAAAA,KAAK,GAAG,CAACA,KAAK,GAAGD,UAAU,IAAIA,UAAU;AAC3C,EAAA;AAEA,EAAA,OAAOJ,IAAI,CAACtD,IAAI,CAAC6D,GAAG,CAAC,CAAC,EAAE7D,IAAI,CAAC8D,GAAG,CAACH,KAAK,EAAED,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;;AC7PD;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAMK,MAAM,CAAC;AACX;EACA,WAAWC,OAAOA,GAAG;AACnB,IAAA,OAAO,EAAE;AACX,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAO,EAAE;AACX,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,MAAM,IAAIC,KAAK,CAAC,qEAAqE,CAAC;AACxF,EAAA;EAEAC,UAAUA,CAACC,MAAM,EAAE;AACjBA,IAAAA,MAAM,GAAG,IAAI,CAACC,eAAe,CAACD,MAAM,CAAC;AACrCA,IAAAA,MAAM,GAAG,IAAI,CAACE,iBAAiB,CAACF,MAAM,CAAC;AACvC,IAAA,IAAI,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;EAEAE,iBAAiBA,CAACF,MAAM,EAAE;AACxB,IAAA,OAAOA,MAAM;AACf,EAAA;AAEAC,EAAAA,eAAeA,CAACD,MAAM,EAAE5M,OAAO,EAAE;AAC/B,IAAA,MAAMgN,UAAU,GAAG3D,WAAS,CAACrJ,OAAO,CAAC,GAAG0G,WAAW,CAACY,gBAAgB,CAACtH,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAA;;IAE5F,OAAO;AACL,MAAA,GAAG,IAAI,CAACiN,WAAW,CAACV,OAAO;MAC3B,IAAI,OAAOS,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG,EAAE,CAAC;AACrD,MAAA,IAAI3D,WAAS,CAACrJ,OAAO,CAAC,GAAG0G,WAAW,CAACK,iBAAiB,CAAC/G,OAAO,CAAC,GAAG,EAAE,CAAC;MACrE,IAAI,OAAO4M,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,EAAE;KAC7C;AACH,EAAA;EAEAG,gBAAgBA,CAACH,MAAM,EAAEM,WAAW,GAAG,IAAI,CAACD,WAAW,CAACT,WAAW,EAAE;AACnE,IAAA,KAAK,MAAM,CAACW,QAAQ,EAAEC,aAAa,CAAC,IAAIjK,MAAM,CAACwB,OAAO,CAACuI,WAAW,CAAC,EAAE;AACnE,MAAA,MAAMrM,KAAK,GAAG+L,MAAM,CAACO,QAAQ,CAAC;AAC9B,MAAA,MAAME,SAAS,GAAGhE,WAAS,CAACxI,KAAK,CAAC,GAAG,SAAS,GAAGoH,MAAM,CAACpH,KAAK,CAAC;MAE9D,IAAI,CAAC,IAAIyM,MAAM,CAACF,aAAa,CAAC,CAACG,IAAI,CAACF,SAAS,CAAC,EAAE;QAC9C,MAAM,IAAIG,SAAS,CACjB,CAAA,EAAG,IAAI,CAACP,WAAW,CAACR,IAAI,CAACgB,WAAW,EAAE,aAAaN,QAAQ,CAAA,iBAAA,EAAoBE,SAAS,CAAA,qBAAA,EAAwBD,aAAa,IAC/H,CAAC;AACH,MAAA;AACF,IAAA;AACF,EAAA;AACF;;AC9DA;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMM,OAAO,GAAG,cAAc;;AAE9B;AACA;AACA;;AAEA,MAAMC,aAAa,SAASrB,MAAM,CAAC;AACjCW,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,EAAE;AAEP5M,IAAAA,OAAO,GAAGuJ,UAAU,CAACvJ,OAAO,CAAC;IAC7B,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAI,CAAC4N,QAAQ,GAAG5N,OAAO;IACvB,IAAI,CAAC6N,OAAO,GAAG,IAAI,CAAClB,UAAU,CAACC,MAAM,CAAC;;AAEtC;AACA;AACA,IAAA,MAAMkB,gBAAgB,GAAGC,IAAI,CAAC1N,GAAG,CAAC,IAAI,CAACuN,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACe,QAAQ,CAAC;AAC3E,IAAA,IAAIF,gBAAgB,EAAE;MACpBA,gBAAgB,CAACG,OAAO,EAAE;AAC5B,IAAA;AAEAF,IAAAA,IAAI,CAAChO,GAAG,CAAC,IAAI,CAAC6N,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACe,QAAQ,EAAE,IAAI,CAAC;AAC1D,EAAA;;AAEA;AACAC,EAAAA,OAAOA,GAAG;AACRF,IAAAA,IAAI,CAACjN,MAAM,CAAC,IAAI,CAAC8M,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACe,QAAQ,CAAC;AACrD5L,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuL,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACiB,SAAS,CAAC;IAE3D,KAAK,MAAMC,YAAY,IAAIhL,MAAM,CAACiL,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAC3D,MAAA,IAAI,CAACD,YAAY,CAAC,GAAG,IAAI;AAC3B,IAAA;AACF,EAAA;;AAEA;EACAE,cAAcA,CAAChD,QAAQ,EAAErL,OAAO,EAAEsO,UAAU,GAAG,IAAI,EAAE;AACnDlD,IAAAA,sBAAsB,CAAC,MAAM;AAC3B;AACA,MAAA,IAAI,CAAC,IAAI,CAACwC,QAAQ,EAAE;AAClB,QAAA;AACF,MAAA;AAEAvC,MAAAA,QAAQ,EAAE;AACZ,IAAA,CAAC,EAAErL,OAAO,EAAEsO,UAAU,CAAC;AACzB,EAAA;EAEA3B,UAAUA,CAACC,MAAM,EAAE;IACjBA,MAAM,GAAG,IAAI,CAACC,eAAe,CAACD,MAAM,EAAE,IAAI,CAACgB,QAAQ,CAAC;AACpDhB,IAAAA,MAAM,GAAG,IAAI,CAACE,iBAAiB,CAACF,MAAM,CAAC;AACvC,IAAA,IAAI,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;;AAEA;EACA,OAAO2B,WAAWA,CAACvO,OAAO,EAAE;AAC1B,IAAA,OAAO+N,IAAI,CAAC1N,GAAG,CAACkJ,UAAU,CAACvJ,OAAO,CAAC,EAAE,IAAI,CAACgO,QAAQ,CAAC;AACrD,EAAA;EAEA,OAAOQ,mBAAmBA,CAACxO,OAAO,EAAE4M,MAAM,GAAG,EAAE,EAAE;IAC/C,OAAO,IAAI,CAAC2B,WAAW,CAACvO,OAAO,CAAC,IAAI,IAAI,IAAI,CAACA,OAAO,EAAE,OAAO4M,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,IAAI,CAAC;AACnG,EAAA;EAEA,WAAWc,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWM,QAAQA,GAAG;AACpB,IAAA,OAAO,CAAA,GAAA,EAAM,IAAI,CAACvB,IAAI,CAAA,CAAE;AAC1B,EAAA;EAEA,WAAWyB,SAASA,GAAG;AACrB,IAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAACF,QAAQ,CAAA,CAAE;AAC5B,EAAA;EAEA,OAAOS,SAASA,CAACC,IAAI,EAAE;AACrB,IAAA,OAAO,GAAGA,IAAI,CAAA,EAAG,IAAI,CAACR,SAAS,CAAA,CAAE;AACnC,EAAA;AACF;;ACjGA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMS,WAAW,GAAG3O,OAAO,IAAI;AAC7B,EAAA,IAAIyC,QAAQ,GAAGzC,OAAO,CAACuH,YAAY,CAAC,gBAAgB,CAAC;AAErD,EAAA,IAAI,CAAC9E,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;AACjC,IAAA,IAAImM,aAAa,GAAG5O,OAAO,CAACuH,YAAY,CAAC,MAAM,CAAC;;AAEhD;AACA;AACA;AACA;AACA,IAAA,IAAI,CAACqH,aAAa,IAAK,CAACA,aAAa,CAAChK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACgK,aAAa,CAAC3J,UAAU,CAAC,GAAG,CAAE,EAAE;AACtF,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAI2J,aAAa,CAAChK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACgK,aAAa,CAAC3J,UAAU,CAAC,GAAG,CAAC,EAAE;MACjE2J,aAAa,GAAG,CAAA,CAAA,EAAIA,aAAa,CAACzF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;AACnD,IAAA;AAEA1G,IAAAA,QAAQ,GAAGmM,aAAa,IAAIA,aAAa,KAAK,GAAG,GAAGA,aAAa,CAACC,IAAI,EAAE,GAAG,IAAI;AACjF,EAAA;EAEA,OAAOpM,QAAQ,GAAGA,QAAQ,CAAC0G,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACC,GAAG,IAAIpH,aAAa,CAACoH,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AACvF,CAAC;AAED,MAAMC,cAAc,GAAG;EACrB7L,IAAIA,CAACX,QAAQ,EAAEzC,OAAO,GAAG0I,QAAQ,CAAC6B,eAAe,EAAE;AACjD,IAAA,OAAO,CAAC,GAAG2E,OAAO,CAAC9G,SAAS,CAACzF,gBAAgB,CAACoB,IAAI,CAAC/D,OAAO,EAAEyC,QAAQ,CAAC,CAAC;EACxE,CAAC;EAED0M,OAAOA,CAAC1M,QAAQ,EAAEzC,OAAO,GAAG0I,QAAQ,CAAC6B,eAAe,EAAE;IACpD,OAAO2E,OAAO,CAAC9G,SAAS,CAACoB,aAAa,CAACzF,IAAI,CAAC/D,OAAO,EAAEyC,QAAQ,CAAC;EAChE,CAAC;AAED2M,EAAAA,QAAQA,CAACpP,OAAO,EAAEyC,QAAQ,EAAE;AAC1B,IAAA,OAAO,CAAC,GAAGzC,OAAO,CAACoP,QAAQ,CAAC,CAACjI,MAAM,CAACkI,KAAK,IAAIA,KAAK,CAACC,OAAO,CAAC7M,QAAQ,CAAC,CAAC;EACvE,CAAC;AAED8M,EAAAA,OAAOA,CAACvP,OAAO,EAAEyC,QAAQ,EAAE;IACzB,MAAM8M,OAAO,GAAG,EAAE;IAClB,IAAIC,QAAQ,GAAGxP,OAAO,CAAC6C,UAAU,CAACiH,OAAO,CAACrH,QAAQ,CAAC;AAEnD,IAAA,OAAO+M,QAAQ,EAAE;AACfD,MAAAA,OAAO,CAACE,IAAI,CAACD,QAAQ,CAAC;MACtBA,QAAQ,GAAGA,QAAQ,CAAC3M,UAAU,CAACiH,OAAO,CAACrH,QAAQ,CAAC;AAClD,IAAA;AAEA,IAAA,OAAO8M,OAAO;EAChB,CAAC;AAEDzF,EAAAA,OAAOA,CAAC9J,OAAO,EAAEyC,QAAQ,EAAE;IACzB,OAAOyM,OAAO,CAAC9G,SAAS,CAAC0B,OAAO,CAAC/F,IAAI,CAAC/D,OAAO,EAAEyC,QAAQ,CAAC;EAC1D,CAAC;AAEDiN,EAAAA,IAAIA,CAAC1P,OAAO,EAAEyC,QAAQ,EAAE;AACtB,IAAA,IAAIkN,QAAQ,GAAG3P,OAAO,CAAC4P,sBAAsB;AAE7C,IAAA,OAAOD,QAAQ,EAAE;AACf,MAAA,IAAIA,QAAQ,CAACL,OAAO,CAAC7M,QAAQ,CAAC,EAAE;QAC9B,OAAO,CAACkN,QAAQ,CAAC;AACnB,MAAA;MAEAA,QAAQ,GAAGA,QAAQ,CAACC,sBAAsB;AAC5C,IAAA;AAEA,IAAA,OAAO,EAAE;EACX,CAAC;AAED;AACAhP,EAAAA,IAAIA,CAACZ,OAAO,EAAEyC,QAAQ,EAAE;AACtB,IAAA,IAAI7B,IAAI,GAAGZ,OAAO,CAAC6P,kBAAkB;AAErC,IAAA,OAAOjP,IAAI,EAAE;AACX,MAAA,IAAIA,IAAI,CAAC0O,OAAO,CAAC7M,QAAQ,CAAC,EAAE;QAC1B,OAAO,CAAC7B,IAAI,CAAC;AACf,MAAA;MAEAA,IAAI,GAAGA,IAAI,CAACiP,kBAAkB;AAChC,IAAA;AAEA,IAAA,OAAO,EAAE;EACX,CAAC;EAEDC,iBAAiBA,CAAC9P,OAAO,EAAE;AACzB,IAAA,MAAM+P,UAAU,GAAG,CACjB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,0BAA0B,CAC3B,CAACjB,GAAG,CAACrM,QAAQ,IAAI,CAAA,EAAGA,QAAQ,CAAA,qBAAA,CAAuB,CAAC,CAACuM,IAAI,CAAC,GAAG,CAAC;IAE/D,OAAO,IAAI,CAAC5L,IAAI,CAAC2M,UAAU,EAAE/P,OAAO,CAAC,CAACmH,MAAM,CAAC6I,EAAE,IAAI,CAAChG,UAAU,CAACgG,EAAE,CAAC,IAAIvG,SAAS,CAACuG,EAAE,CAAC,CAAC;EACtF,CAAC;EAEDC,sBAAsBA,CAACjQ,OAAO,EAAE;AAC9B,IAAA,MAAMyC,QAAQ,GAAGkM,WAAW,CAAC3O,OAAO,CAAC;AAErC,IAAA,IAAIyC,QAAQ,EAAE;MACZ,OAAOwM,cAAc,CAACE,OAAO,CAAC1M,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAI;AAC3D,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAEDyN,sBAAsBA,CAAClQ,OAAO,EAAE;AAC9B,IAAA,MAAMyC,QAAQ,GAAGkM,WAAW,CAAC3O,OAAO,CAAC;IAErC,OAAOyC,QAAQ,GAAGwM,cAAc,CAACE,OAAO,CAAC1M,QAAQ,CAAC,GAAG,IAAI;EAC3D,CAAC;EAED0N,+BAA+BA,CAACnQ,OAAO,EAAE;AACvC,IAAA,MAAMyC,QAAQ,GAAGkM,WAAW,CAAC3O,OAAO,CAAC;IAErC,OAAOyC,QAAQ,GAAGwM,cAAc,CAAC7L,IAAI,CAACX,QAAQ,CAAC,GAAG,EAAE;AACtD,EAAA;AACF,CAAC;;AChID;AACA;AACA;AACA;AACA;AACA;;AAMA,MAAM2N,oBAAoB,GAAGA,CAACC,SAAS,EAAEC,MAAM,GAAG,MAAM,KAAK;AAC3D,EAAA,MAAMC,UAAU,GAAG,CAAA,aAAA,EAAgBF,SAAS,CAACnC,SAAS,CAAA,CAAE;AACxD,EAAA,MAAMQ,IAAI,GAAG2B,SAAS,CAAC5D,IAAI;AAE3BrK,EAAAA,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE6H,UAAU,EAAE,CAAA,kBAAA,EAAqB7B,IAAI,CAAA,EAAA,CAAI,EAAE,UAAU1M,KAAK,EAAE;AACpF,IAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC4C,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;MACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,IAAA;AAEA,IAAA,IAAIzG,UAAU,CAAC,IAAI,CAAC,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMpH,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,CAACpG,OAAO,CAAC,CAAA,CAAA,EAAI4E,IAAI,EAAE,CAAC;AACtF,IAAA,MAAMxO,QAAQ,GAAGmQ,SAAS,CAAC7B,mBAAmB,CAAC5L,MAAM,CAAC;;AAEtD;AACA1C,IAAAA,QAAQ,CAACoQ,MAAM,CAAC,EAAE;AACpB,EAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAMI,mBAAmB,GAAGA,CAACC,MAAM,EAAEC,OAAO,EAAEC,cAAc,EAAEP,MAAM,EAAEjF,QAAQ,GAAG,IAAI,KAAK;AACxFyF,EAAAA,WAAW,CAAC,CAAA,EAAGF,OAAO,CAAA,CAAA,EAAID,MAAM,CAAClE,IAAI,CAAA,CAAE,EAAEoE,cAAc,EAAEE,IAAI,IAAI;IAC/D,MAAMC,SAAS,GAAGD,IAAI,CAACE,OAAO,CAAC9J,MAAM,CAAC7C,OAAO,CAAC,CAACwK,GAAG,CAAC9O,OAAO,IAAI2Q,MAAM,CAACnC,mBAAmB,CAACxO,OAAO,CAAC,CAAC;AAClG,IAAA,IAAI,OAAOqL,QAAQ,KAAK,UAAU,EAAE;AAClCA,MAAAA,QAAQ,CAAC;AAAE,QAAA,GAAG0F,IAAI;AAAEC,QAAAA;AAAU,OAAC,CAAC;AAClC,IAAA;AAEA,IAAA,KAAK,MAAM9Q,QAAQ,IAAI8Q,SAAS,EAAE;AAChC9Q,MAAAA,QAAQ,CAACoQ,MAAM,CAAC,EAAE;AACpB,IAAA;AACF,EAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAMQ,WAAW,GAAGA,CAACF,OAAO,EAAEC,cAAc,EAAExF,QAAQ,KAAK;AACzD,EAAA,MAAM5I,QAAQ,GAAG,CAAA,EAAGoO,cAAc,CAAA,8BAAA,CAAgC;EAClEzO,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEkI,OAAO,EAAEnO,QAAQ,EAAE,UAAUT,KAAK,EAAE;AAC5D,IAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC4C,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;MACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,IAAA;AAEA,IAAA,MAAMhO,QAAQ,GAAGwM,cAAc,CAACgB,sBAAsB,CAAC,IAAI,CAAC;AAC5D,IAAA,MAAMgB,OAAO,GAAGxO,QAAQ,GAAGwM,cAAc,CAAC7L,IAAI,CAACX,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAEjE4I,IAAAA,QAAQ,CAAC;MAAE4F,OAAO;AAAEjP,MAAAA;AAAM,KAAC,CAAC;AAC9B,EAAA,CAAC,CAAC;AACJ,CAAC;;ACzDD;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyK,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMkD,WAAW,GAAG,CAAA,KAAA,EAAQhD,WAAS,CAAA,CAAE;AACvC,MAAMiD,YAAY,GAAG,CAAA,MAAA,EAASjD,WAAS,CAAA,CAAE;AACzC,MAAMkD,iBAAe,GAAG,MAAM;AAC9B,MAAMC,iBAAe,GAAG,MAAM;;AAE9B;AACA;AACA;;AAEA,MAAMC,KAAK,SAAS3D,aAAa,CAAC;AAChC;EACA,WAAWlB,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA8E,EAAAA,KAAKA,GAAG;IACN,MAAMC,UAAU,GAAGpP,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEsD,WAAW,CAAC;IAEnE,IAAIM,UAAU,CAACC,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAAC7D,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;IAE/C,MAAM/C,UAAU,GAAG,IAAI,CAACV,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC;AACpE,IAAA,IAAI,CAAC/C,cAAc,CAAC,MAAM,IAAI,CAACqD,eAAe,EAAE,EAAE,IAAI,CAAC9D,QAAQ,EAAEU,UAAU,CAAC;AAC9E,EAAA;;AAEA;AACAoD,EAAAA,eAAeA,GAAG;AAChB,IAAA,IAAI,CAAC9D,QAAQ,CAAC9M,MAAM,EAAE;IACtBsB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEuD,YAAY,CAAC;IACjD,IAAI,CAAClD,OAAO,EAAE;AAChB,EAAA;AACF;;AAEA;AACA;AACA;;AAEAmC,oBAAoB,CAACkB,KAAK,EAAE,OAAO,CAAC;;AC5DpC;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAM7E,MAAI,GAAG,QAAQ;AACrB,MAAMuB,UAAQ,GAAG,WAAW;AAC5B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMC,mBAAiB,GAAG,QAAQ;AAClC,MAAMC,sBAAoB,GAAG,2BAA2B;AACxD,MAAMC,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;;AAE/D;AACA;AACA;;AAEA,MAAMI,MAAM,SAASpE,aAAa,CAAC;AACjC;EACA,WAAWlB,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP;AACA,IAAA,IAAI,CAACpE,QAAQ,CAAChH,YAAY,CAAC,cAAc,EAAE,IAAI,CAACgH,QAAQ,CAACzD,SAAS,CAAC6H,MAAM,CAACJ,mBAAiB,CAAC,CAAC;AAC/F,EAAA;AACF;;AAEA;AACA;AACA;;AAEAxP,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE7P,KAAK,IAAI;EAC7EA,KAAK,CAACyO,cAAc,EAAE;EAEtB,MAAMwB,MAAM,GAAGjQ,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC+H,sBAAoB,CAAC;AACzD,EAAA,MAAMd,IAAI,GAAGgB,MAAM,CAACvD,mBAAmB,CAACyD,MAAM,CAAC;EAE/ClB,IAAI,CAACiB,MAAM,EAAE;AACf,CAAC,CAAC;;ACnDF;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;;AAEA,MAAMvF,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMO,gBAAc,GAAG,WAAW;AAClC,MAAMC,iBAAe,GAAG,YAAY;AAEpC,MAAMC,cAAc,GAAG,MAAM;AAC7B,MAAMC,eAAe,GAAG,OAAO;AAE/B,MAAMC,WAAW,GAAG,CAAA,KAAA,EAAQpE,WAAS,CAAA,CAAE;AACvC,MAAMqE,UAAU,GAAG,CAAA,IAAA,EAAOrE,WAAS,CAAA,CAAE;AACrC,MAAMsE,eAAa,GAAG,CAAA,OAAA,EAAUtE,WAAS,CAAA,CAAE;AAC3C,MAAMuE,kBAAgB,GAAG,CAAA,UAAA,EAAavE,WAAS,CAAA,CAAE;AACjD,MAAMwE,kBAAgB,GAAG,CAAA,UAAA,EAAaxE,WAAS,CAAA,CAAE;AACjD,MAAMyE,mBAAiB,GAAG,CAAA,WAAA,EAAczE,WAAS,CAAA,CAAE;AACnD,MAAM0E,qBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAC7D,MAAMG,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMkB,mBAAmB,GAAG,UAAU;AACtC,MAAMjB,mBAAiB,GAAG,QAAQ;AAClC,MAAMR,iBAAe,GAAG,eAAe;AACvC,MAAM0B,iBAAiB,GAAG,iBAAiB;AAC3C,MAAMC,eAAe,GAAG,eAAe;AACvC,MAAMC,gBAAgB,GAAG,qBAAqB;AAC9C,MAAMC,iBAAiB,GAAG,QAAQ;AAClC;AACA;AACA,MAAMC,kBAAkB,GAAG,kBAAkB;;AAE7C;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,wBAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAG,GAAG;;AAE3B;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG,IAAI;AAEnC,MAAMC,eAAe,GAAG,SAAS;AACjC;AACA;AACA,MAAMC,aAAa,GAAG,CAAA,oBAAA,EAAuBP,gBAAgB,CAAA,CAAA,CAAG;AAChE,MAAMQ,oBAAoB,GAAGF,eAAe,GAAGC,aAAa;AAC5D,MAAME,gBAAc,GAAG,iBAAiB;AACxC,MAAMC,mBAAmB,GAAG,sBAAsB;AAClD,MAAMC,mBAAmB,GAAG,8BAA8B;AAC1D,MAAMC,mBAAmB,GAAG,qCAAqC;AACjE,MAAMC,wBAAwB,GAAG,wBAAwB;AACzD,MAAMC,wBAAwB,GAAG,wBAAwB;AACzD,MAAMC,sBAAsB,GAAG,2BAA2B;AAE1D,MAAMC,gBAAgB,GAAG;EACvB,CAAC9B,gBAAc,GAAGG,eAAe;AACjC,EAAA,CAACF,iBAAe,GAAGC;AACrB,CAAC;AAED,MAAM6B,SAAS,GAAG,MAAM;AACxB,MAAMC,SAAS,GAAG,MAAM;AACxB,MAAMC,SAAS,GAAG,MAAM;AAExB,MAAM5H,SAAO,GAAG;AACd6H,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,IAAI,EAAEF,SAAS;AACfG,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAMhI,aAAW,GAAG;AAClB4H,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA,MAAMC,cAAc,GAAGC,QAAQ,IAAKA,QAAQ,GAAG,GAAG,GAChD,CAAC,GAAGA,QAAQ,GAAGA,QAAQ,GAAGA,QAAQ,GAClC,CAAC,GAAK,CAAE,EAAE,GAAGA,QAAQ,GAAI,CAAC,KAAK,CAAC,GAAI,CAAG;;AAEzC;AACA;AACA;;AAEA,MAAMC,QAAQ,SAAShH,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;AACA;AACA;AACA,IAAA,IAAI,CAACgI,SAAS,GAAG3F,cAAc,CAACE,OAAO,CAACsE,gBAAc,EAAE,IAAI,CAAC7F,QAAQ,CAAC,IAAI,IAAI,CAACA,QAAQ;AACvF,IAAA,IAAI,CAACiH,kBAAkB,GAAG5F,cAAc,CAACE,OAAO,CAACuE,mBAAmB,EAAE,IAAI,CAAC9F,QAAQ,CAAC;AACpF,IAAA,IAAI,CAACkH,iBAAiB,GAAG7F,cAAc,CAACE,OAAO,CAACwE,mBAAmB,EAAE,IAAI,CAAC/F,QAAQ,CAAC;AACnF;AACA;AACA,IAAA,IAAI,CAACmH,aAAa,GAAG9F,cAAc,CAAC7L,IAAI,CAACyQ,wBAAwB,EAAE,IAAI,CAACjG,QAAQ,CAAC;AACjF,IAAA,IAAI,CAACoH,aAAa,GAAG/F,cAAc,CAAC7L,IAAI,CAAC0Q,wBAAwB,EAAE,IAAI,CAAClG,QAAQ,CAAC;IAEjF,IAAI,CAACqH,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,SAAS,GAAG,IAAI;AACrB;IACA,IAAI,CAACC,YAAY,GAAG,IAAI;AACxB;AACA;IACA,IAAI,CAACC,QAAQ,GAAG,KAAK;AACrB,IAAA,IAAI,CAACC,WAAW,GAAG,IAAIvV,GAAG,EAAE;AAC5B;AACA;AACA;AACA;AACA,IAAA,IAAI,CAACwV,QAAQ,GAAG,IAAI,CAACzH,OAAO,CAACuG,QAAQ;AAErC,IAAA,IAAI,CAACmB,YAAY,GAAG,IAAI,CAACC,mBAAmB,EAAE;IAE9C,IAAI,CAACC,kBAAkB,EAAE;IACzB,IAAI,CAACC,aAAa,EAAE;IACpB,IAAI,CAACC,mBAAmB,EAAE;IAE1B,IAAI,IAAI,CAACL,QAAQ,EAAE;MACjB,IAAI,CAACM,KAAK,EAAE;AACd,IAAA;IAEA,IAAI,CAACC,uBAAuB,EAAE;AAChC,EAAA;;AAEA;EACA,WAAWtJ,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA7L,EAAAA,IAAIA,GAAG;IACL,IAAI,CAACkV,EAAE,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAA;AAEAC,EAAAA,eAAeA,GAAG;AAChB;AACA,IAAA,IAAItN,QAAQ,CAACuN,eAAe,KAAK,SAAS,IAAIxM,SAAS,CAAC,IAAI,CAACmE,QAAQ,CAAC,EAAE;MACtE,IAAI,CAAChN,IAAI,EAAE;AACb,IAAA;AACF,EAAA;AAEA8O,EAAAA,IAAIA,GAAG;IACL,IAAI,CAACoG,EAAE,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAA;AAEAvB,EAAAA,KAAKA,GAAG;IACN,IAAI,CAAC0B,cAAc,EAAE;AACrB;AACA;IACA,IAAI,CAACtI,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACoS,kBAAkB,CAAC;AACpD,EAAA;AAEA0C,EAAAA,KAAKA,GAAG;IACN,IAAI,CAACM,cAAc,EAAE;IACrB,IAAI,CAACC,iBAAiB,EAAE;IACxB,IAAI,CAACvI,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAClD,kBAAkB,CAAC;AACjD,EAAA;EAEA4C,EAAEA,CAAC5J,KAAK,EAAE;AACR;IACA,IAAI,IAAI,CAACkJ,QAAQ,EAAE;AACjB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMiB,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;IAC9B,MAAMC,QAAQ,GAAGrQ,MAAM,CAACsQ,QAAQ,CAACtK,KAAK,EAAE,EAAE,CAAC;;AAE3C;AACA;AACA;IACA,IAAI,IAAI,CAAC2B,OAAO,CAACwG,IAAI,KAAKF,SAAS,IAAI,CAAC,IAAI,CAACsC,qBAAqB,EAAE,IAAI,IAAI,CAACC,QAAQ,EAAE,EAAE;AACvF,MAAA,IAAIH,QAAQ,GAAGF,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,IAAI,CAACyR,eAAe,CAAC,IAAI,CAAC;AAC1B,QAAA;AACF,MAAA;MAEA,IAAIJ,QAAQ,GAAG,CAAC,EAAE;AAChB,QAAA,IAAI,CAACI,eAAe,CAAC,KAAK,CAAC;AAC3B,QAAA;AACF,MAAA;AACF,IAAA;IAEA,MAAMC,WAAW,GAAG,IAAI,CAACC,eAAe,CAACN,QAAQ,EAAEF,KAAK,CAACnR,MAAM,CAAC;AAChE;AACA;AACA;AACA;AACA,IAAA,MAAM4R,YAAY,GAAG,IAAI,CAACf,SAAS,EAAE;AAErC,IAAA,IAAIa,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKE,YAAY,EAAE;AACxD,MAAA;AACF,IAAA;IAEA,MAAMC,UAAU,GAAG3U,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0E,WAAW,EAAE;AAClEzO,MAAAA,aAAa,EAAEwS,KAAK,CAACO,WAAW,CAAC;MACjCI,SAAS,EAAE,IAAI,CAACC,UAAU,CAACH,YAAY,EAAEF,WAAW,CAAC;AACrDM,MAAAA,IAAI,EAAEJ,YAAY;AAClBhB,MAAAA,EAAE,EAAEc;AACN,KAAC,CAAC;IAEF,IAAIG,UAAU,CAACtF,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC0F,OAAO,EAAE,EAAE;AAClB,MAAA,IAAI,CAACC,OAAO,CAACR,WAAW,CAAC;AACzB,MAAA;AACF,IAAA;;AAEA;AACA;AACA,IAAA,IAAI,CAACS,cAAc,CAACT,WAAW,CAAC;AAClC,EAAA;AAEA3I,EAAAA,OAAOA,GAAG;AACR;AACA;IACA,IAAI,CAACiI,cAAc,EAAE;IAErB,IAAI,IAAI,CAAChB,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACoC,UAAU,EAAE;AAC7B,IAAA;AAEA,IAAA,IAAI,IAAI,CAACnC,YAAY,KAAK,IAAI,EAAE;AAC9BoC,MAAAA,oBAAoB,CAAC,IAAI,CAACpC,YAAY,CAAC;AACzC,IAAA;;AAEA;AACA;AACA,IAAA,KAAK,MAAMqC,KAAK,IAAIvI,cAAc,CAAC7L,IAAI,CAAC,CAAA,CAAA,EAAI4P,gBAAgB,EAAE,EAAE,IAAI,CAAC4B,SAAS,CAAC,EAAE;MAC/E4C,KAAK,CAAC1W,MAAM,EAAE;AAChB,IAAA;AAEA,IAAA,IAAI,CAAC8T,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,EAAE;;AAExC;AACA;IACAtV,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuS,SAAS,EAAE1G,WAAS,CAAC;IAE3C,KAAK,CAACD,OAAO,EAAE;AACjB,EAAA;;AAEA;AACA;AACA;EACAnB,iBAAiBA,CAACF,MAAM,EAAE;AACxB,IAAA,IAAI,CAAC,CAACqH,SAAS,EAAEC,SAAS,EAAEC,SAAS,CAAC,CAACvP,QAAQ,CAACgI,MAAM,CAACyH,IAAI,CAAC,EAAE;AAC5DzH,MAAAA,MAAM,CAACyH,IAAI,GAAG9H,SAAO,CAAC8H,IAAI;AAC5B,IAAA;AAEA,IAAA,OAAOzH,MAAM;AACf,EAAA;AAEA4I,EAAAA,mBAAmBA,GAAG;IACpB,MAAMmC,MAAM,GAAG1I,cAAc,CAACE,OAAO,CAACqE,oBAAoB,EAAE,IAAI,CAAC5F,QAAQ,CAAC;AAC1E,IAAA,MAAM1B,KAAK,GAAGyL,MAAM,GAAG,IAAI,CAACrB,SAAS,EAAE,CAACnK,OAAO,CAACwL,MAAM,CAAC,GAAG,CAAC;AAC3D,IAAA,OAAOpP,IAAI,CAAC6D,GAAG,CAACF,KAAK,EAAE,CAAC,CAAC;AAC3B,EAAA;AAEAuJ,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAI,IAAI,CAAC5H,OAAO,CAAC0G,QAAQ,EAAE;AACzBnS,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE4E,eAAa,EAAExQ,KAAK,IAAI,IAAI,CAAC4V,QAAQ,CAAC5V,KAAK,CAAC,CAAC;AAC9E,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC6L,OAAO,CAAC2G,KAAK,KAAK,OAAO,EAAE;AAClCpS,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE6E,kBAAgB,EAAE,MAAM,IAAI,CAAC+B,KAAK,EAAE,CAAC;AACpEpS,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE8E,kBAAgB,EAAE,MAAM,IAAI,CAACmF,iBAAiB,EAAE,CAAC;AAClF,IAAA;;AAEA;AACAzV,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+P,SAAS,EAAEjC,mBAAiB,EAAE,MAAM,IAAI,CAACmF,qBAAqB,EAAE,CAAC;AACxF,EAAA;EAEAF,QAAQA,CAAC5V,KAAK,EAAE;IACd,IAAI,iBAAiB,CAACuL,IAAI,CAACvL,KAAK,CAACY,MAAM,CAAC4N,OAAO,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMwG,SAAS,GAAGhD,gBAAgB,CAAChS,KAAK,CAAC/B,GAAG,CAAC;AAC7C,IAAA,IAAI+W,SAAS,EAAE;MACbhV,KAAK,CAACyO,cAAc,EAAE;MACtB,IAAI,CAACqH,qBAAqB,EAAE;MAC5B,IAAId,SAAS,KAAK3E,eAAe,EAAE;QACjC,IAAI,CAAC3C,IAAI,EAAE;AACb,MAAA,CAAC,MAAM;QACL,IAAI,CAAC9O,IAAI,EAAE;AACb,MAAA;AACF,IAAA;AACF,EAAA;AAEA8U,EAAAA,aAAaA,GAAG;AACd;IACA,IAAI,IAAI,CAACyB,OAAO,EAAE,IAAI,OAAOY,oBAAoB,KAAK,WAAW,EAAE;AACjE,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC7C,SAAS,GAAG,IAAI6C,oBAAoB,CACvCpT,OAAO,IAAI,IAAI,CAACqT,mBAAmB,CAACrT,OAAO,CAAC,EAC5C;MAAE+F,IAAI,EAAE,IAAI,CAACkK,SAAS;MAAEqD,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAAE,KAC7D,CAAC;IAED,KAAK,MAAMC,IAAI,IAAI,IAAI,CAAC5B,SAAS,EAAE,EAAE;AACnC,MAAA,IAAI,CAACpB,SAAS,CAACiD,OAAO,CAACD,IAAI,CAAC;AAC9B,IAAA;AACF,EAAA;EAEAF,mBAAmBA,CAACrT,OAAO,EAAE;AAC3B;AACA;IACA,IAAI,IAAI,CAACyQ,QAAQ,EAAE;AACjB,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMgD,KAAK,IAAIzT,OAAO,EAAE;AAC3B,MAAA,IAAI,CAAC0Q,WAAW,CAACtV,GAAG,CAACqY,KAAK,CAACxV,MAAM,EAAEwV,KAAK,CAACC,cAAc,GAAGD,KAAK,CAACE,iBAAiB,GAAG,CAAC,CAAC;AACxF,IAAA;AAEA,IAAA,MAAMjC,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;AAC9B,IAAA,MAAMiC,MAAM,GAAGlC,KAAK,CAACvH,GAAG,CAACoJ,IAAI,IAAI,IAAI,CAAC7C,WAAW,CAAChV,GAAG,CAAC6X,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,MAAMM,QAAQ,GAAGjQ,IAAI,CAAC6D,GAAG,CAAC,GAAGmM,MAAM,CAAC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAIE,SAAS,GAAG,IAAI,CAAClD,YAAY;IAEjC,IAAIiD,QAAQ,GAAG,CAAC,EAAE;AAChBC,MAAAA,SAAS,GAAGF,MAAM,CAACG,SAAS,CAACC,KAAK,IAAIA,KAAK,IAAIH,QAAQ,GAAGnF,sBAAsB,CAAC;AACnF,IAAA;AAEA,IAAA,IAAI,CAACuF,UAAU,CAACH,SAAS,CAAC;AAC1B;AACA;AACA;IACA,IAAI,CAACI,kBAAkB,EAAE;AAC3B,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA9C,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,IAAI,CAACoB,OAAO,EAAE,IAAK,IAAI,CAACvC,SAAS,CAACkE,WAAW,GAAG,IAAI,CAAClE,SAAS,CAACmE,WAAW,IAAK,CAAC,EAAE;MACpF,OAAO,IAAI,CAACxD,YAAY;AAC1B,IAAA;AAEA,IAAA,IAAIrJ,KAAK,GAAG,IAAI,CAACqJ,YAAY;AAC7B,IAAA,IAAIyD,aAAa,GAAG9S,MAAM,CAAC+S,iBAAiB;AAE5C,IAAA,KAAK,MAAM,CAACC,SAAS,EAAEhB,IAAI,CAAC,IAAI,IAAI,CAAC5B,SAAS,EAAE,CAAC3R,OAAO,EAAE,EAAE;AAC1D;AACA,MAAA,MAAMwU,KAAK,GAAG5Q,IAAI,CAAC6Q,GAAG,CAAC,IAAI,CAACC,YAAY,CAACnB,IAAI,CAAC,CAAC;MAC/C,IAAIiB,KAAK,GAAGH,aAAa,EAAE;AACzBA,QAAAA,aAAa,GAAGG,KAAK;AACrBjN,QAAAA,KAAK,GAAGgN,SAAS;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,OAAOhN,KAAK;AACd,EAAA;EAEAmL,cAAcA,CAACnL,KAAK,EAAE;IACpB,MAAMgM,IAAI,GAAG,IAAI,CAAC5B,SAAS,EAAE,CAACpK,KAAK,CAAC;IACpC,IAAI,CAACgM,IAAI,EAAE;AACT,MAAA;AACF,IAAA;AAEA,IAAA,MAAMoB,IAAI,GAAG,IAAI,CAACD,YAAY,CAACnB,IAAI,CAAC;IACpC,IAAI3P,IAAI,CAAC6Q,GAAG,CAACE,IAAI,CAAC,GAAG,CAAC,EAAE;AACtB,MAAA;AACF,IAAA;;AAEA;AACA;AACA;AACA;AACA;IACA,MAAMC,UAAU,GAAG,IAAI,CAAC3E,SAAS,CAAC4E,UAAU,GAAGF,IAAI;AACnD,IAAA,IAAI,CAAC1E,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,MAAM;AAC5C,IAAA,IAAI,CAAC+B,cAAc,CAACF,UAAU,EAAE,MAAM;AACpC,MAAA,IAAI,CAAC3E,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,EAAE;AACxC;AACA;AACA;AACA,MAAA,IAAI,CAAC,IAAI,CAACxC,SAAS,EAAE;AACnB,QAAA,IAAI,CAAC0D,UAAU,CAAC1M,KAAK,CAAC;AACxB,MAAA;;AAEA;AACA;AACA;MACA,IAAI,CAAC2M,kBAAkB,EAAE;AAC3B,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACAY,EAAAA,cAAcA,CAACF,UAAU,EAAEG,UAAU,EAAE;AACrC,IAAA,IAAI,IAAI,CAACvE,YAAY,KAAK,IAAI,EAAE;AAC9BoC,MAAAA,oBAAoB,CAAC,IAAI,CAACpC,YAAY,CAAC;MACvC,IAAI,CAACA,YAAY,GAAG,IAAI;AAC1B,IAAA;AAEA,IAAA,MAAMwE,SAAS,GAAG,IAAI,CAAC/E,SAAS,CAAC4E,UAAU;AAC3C,IAAA,MAAMI,QAAQ,GAAGL,UAAU,GAAGI,SAAS;;AAEvC;IACA,IAAI,IAAI,CAAClD,qBAAqB,EAAE,IAAI,OAAOoD,qBAAqB,KAAK,WAAW,EAAE;AAChF,MAAA,IAAI,CAACjF,SAAS,CAACkF,QAAQ,CAAC;AAAER,QAAAA,IAAI,EAAEC,UAAU;AAAEQ,QAAAA,QAAQ,EAAE;AAAU,OAAC,CAAC;AAClEL,MAAAA,UAAU,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAIM,SAAS,GAAG,IAAI;IACpB,MAAMC,IAAI,GAAGC,GAAG,IAAI;MAClB,IAAIF,SAAS,KAAK,IAAI,EAAE;AACtBA,QAAAA,SAAS,GAAGE,GAAG;AACjB,MAAA;AAEA,MAAA,MAAMxF,QAAQ,GAAGnM,IAAI,CAAC8D,GAAG,CAAC,CAAC6N,GAAG,GAAGF,SAAS,IAAI5G,eAAe,EAAE,CAAC,CAAC;AACjE;AACA;AACA;AACA,MAAA,IAAI,CAACwB,SAAS,CAACkF,QAAQ,CAAC;QAAER,IAAI,EAAEK,SAAS,GAAIC,QAAQ,GAAGnF,cAAc,CAACC,QAAQ,CAAE;AAAEqF,QAAAA,QAAQ,EAAE;AAAU,OAAC,CAAC;MAEzG,IAAIrF,QAAQ,GAAG,CAAC,EAAE;AAChB,QAAA,IAAI,CAACS,YAAY,GAAG0E,qBAAqB,CAACI,IAAI,CAAC;AAC/C,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAI,CAACrF,SAAS,CAACkF,QAAQ,CAAC;AAAER,QAAAA,IAAI,EAAEC,UAAU;AAAEQ,QAAAA,QAAQ,EAAE;AAAU,OAAC,CAAC;MAClE,IAAI,CAAC5E,YAAY,GAAG,IAAI;AACxBuE,MAAAA,UAAU,EAAE;IACd,CAAC;AAED,IAAA,IAAI,CAACvE,YAAY,GAAG0E,qBAAqB,CAACI,IAAI,CAAC;AACjD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;EACAZ,YAAYA,CAACrZ,OAAO,EAAE;IACpB,MAAMma,YAAY,GAAG,IAAI,CAACvF,SAAS,CAACwF,qBAAqB,EAAE;AAC3D,IAAA,MAAMC,IAAI,GAAGra,OAAO,CAACoa,qBAAqB,EAAE;IAE5C,IAAI,IAAI,CAACxM,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACgP,iBAAiB,CAAC,EAAE;AACvD,MAAA,OAAQuH,IAAI,CAACf,IAAI,GAAIe,IAAI,CAACC,KAAK,GAAG,CAAE,IAAKH,YAAY,CAACb,IAAI,GAAIa,YAAY,CAACG,KAAK,GAAG,CAAE,CAAC;AACxF,IAAA;;AAEA;AACA;AACA;AACA;AACA,IAAA,MAAMC,QAAQ,GAAGrU,MAAM,CAAC+C,UAAU,CAACF,gBAAgB,CAAC,IAAI,CAAC6L,SAAS,CAAC,CAAC4F,wBAAwB,CAAC,IAAI,CAAC;IAElG,OAAOzP,OAAK,EAAE,GACZsP,IAAI,CAACI,KAAK,IAAIN,YAAY,CAACM,KAAK,GAAGF,QAAQ,CAAC,GAC5CF,IAAI,CAACf,IAAI,IAAIa,YAAY,CAACb,IAAI,GAAGiB,QAAQ,CAAC;AAC9C,EAAA;;AAEA;AACA;EACA5D,eAAeA,CAAC+D,MAAM,EAAE;AACtB,IAAA,MAAMrE,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;AAC9B,IAAA,MAAMqE,IAAI,GAAGtE,KAAK,CAACnR,MAAM,GAAG,CAAC;AAC7B,IAAA,MAAM0V,SAAS,GAAG,IAAI,CAACrF,YAAY;AACnC,IAAA,MAAMsF,OAAO,GAAGH,MAAM,GAAG,CAAC,GAAGC,IAAI;AACjC,IAAA,MAAM3D,SAAS,GAAG,IAAI,CAAC8D,cAAc,CAACJ,MAAM,CAAC;IAE7C,MAAM3D,UAAU,GAAG3U,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0E,WAAW,EAAE;AAClEzO,MAAAA,aAAa,EAAEwS,KAAK,CAACwE,OAAO,CAAC;MAC7B7D,SAAS;AACTE,MAAAA,IAAI,EAAE0D,SAAS;AACf9E,MAAAA,EAAE,EAAE+E;AACN,KAAC,CAAC;IAEF,IAAI9D,UAAU,CAACtF,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAAC2D,QAAQ,GAAG,IAAI;AAEpB,IAAA,MAAMoC,KAAK,GAAG,CAACkD,MAAM,GAAGrE,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAACsE,IAAI,CAAC,EAAEI,SAAS,CAAC,IAAI,CAAC;AAC/DvD,IAAAA,KAAK,CAACrN,SAAS,CAACiM,GAAG,CAACpD,gBAAgB,CAAC;AACrCwE,IAAAA,KAAK,CAACrN,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AACzC4F,IAAAA,KAAK,CAAC1Q,eAAe,CAAC,IAAI,CAAC;AAC3B;AACA;IACA,KAAK,MAAMkU,IAAI,IAAI/L,cAAc,CAAC7L,IAAI,CAAC,MAAM,EAAEoU,KAAK,CAAC,EAAE;AACrDwD,MAAAA,IAAI,CAAClU,eAAe,CAAC,IAAI,CAAC;AAC5B,IAAA;AAEA0Q,IAAAA,KAAK,CAAC5Q,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC4Q,KAAK,CAACyD,KAAK,GAAG,IAAI;AAElB,IAAA,IAAI,CAACrG,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,MAAM;AAE5C,IAAA,IAAIgD,MAAM,EAAE;AACV,MAAA,IAAI,CAAC9F,SAAS,CAACsG,MAAM,CAAC1D,KAAK,CAAC;AAC9B,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAAC5C,SAAS,CAACuG,OAAO,CAAC3D,KAAK,CAAC;AAC7B;AACA;AACA,MAAA,IAAI,CAAC4D,WAAW,CAAC,IAAI,CAAC/B,YAAY,CAAChD,KAAK,CAACuE,SAAS,CAAC,CAAC,CAAC;AACvD,IAAA;AAEA,IAAA,IAAI,CAACnB,cAAc,CAAC,IAAI,CAAC7E,SAAS,CAAC4E,UAAU,GAAG,IAAI,CAACH,YAAY,CAAC7B,KAAK,CAAC,EAAE,MAAM;AAC9E;AACA;AACA;MACAA,KAAK,CAAC1W,MAAM,EAAE;AACd,MAAA,IAAI,CAACsa,WAAW,CAAC,IAAI,CAAC/B,YAAY,CAAChD,KAAK,CAACwE,OAAO,CAAC,CAAC,CAAC;MAEnD,IAAI,CAACtF,YAAY,GAAGsF,OAAO;MAC3B,IAAI,CAAClF,mBAAmB,EAAE;MAE1BvT,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2E,UAAU,EAAE;AAC9C1O,QAAAA,aAAa,EAAEwS,KAAK,CAACwE,OAAO,CAAC;QAC7B7D,SAAS;AACTE,QAAAA,IAAI,EAAE0D,SAAS;AACf9E,QAAAA,EAAE,EAAE+E;AACN,OAAC,CAAC;AAEF,MAAA,IAAI,CAACjG,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,EAAE;MACxC,IAAI,CAACtC,QAAQ,GAAG,KAAK;AACvB,IAAA,CAAC,CAAC;AACJ,EAAA;EAEA0F,cAAcA,CAACJ,MAAM,EAAE;IACrB,IAAI3P,OAAK,EAAE,EAAE;AACX,MAAA,OAAO2P,MAAM,GAAGrI,eAAe,GAAGD,cAAc;AAClD,IAAA;AAEA,IAAA,OAAOsI,MAAM,GAAGtI,cAAc,GAAGC,eAAe;AAClD,EAAA;;AAEA;AACA;AACA;AACA;EACA+I,WAAWA,CAACjC,KAAK,EAAE;AACjB,IAAA,IAAI,CAACvE,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,MAAM;AAC5C,IAAA,IAAI,CAAC9C,SAAS,CAACyG,QAAQ,CAAC;AAAE/B,MAAAA,IAAI,EAAEH,KAAK;AAAEmC,MAAAA,GAAG,EAAE,CAAC;AAAEvB,MAAAA,QAAQ,EAAE;AAAU,KAAC,CAAC;AACvE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;EACA3C,OAAOA,CAAClL,KAAK,EAAE;AACb,IAAA,IAAI,CAAC0M,UAAU,CAAC1M,KAAK,CAAC;AACxB,EAAA;EAEA0M,UAAUA,CAAC1M,KAAK,EAAE;AAChB,IAAA,MAAMmK,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;IAC9B,IAAIpK,KAAK,KAAK,IAAI,CAACqJ,YAAY,IAAI,CAACc,KAAK,CAACnK,KAAK,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMgL,IAAI,GAAG,IAAI,CAAC3B,YAAY;IAE9B,IAAI,CAACA,YAAY,GAAGrJ,KAAK;IACzB,IAAI,CAACyJ,mBAAmB,EAAE;IAE1BvT,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2E,UAAU,EAAE;AAC9C1O,MAAAA,aAAa,EAAEwS,KAAK,CAACnK,KAAK,CAAC;MAC3B8K,SAAS,EAAE,IAAI,CAACC,UAAU,CAACC,IAAI,EAAEhL,KAAK,CAAC;MACvCgL,IAAI;AACJpB,MAAAA,EAAE,EAAE5J;AACN,KAAC,CAAC;AACJ,EAAA;AAEAyJ,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,MAAMU,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;AAE9B,IAAA,KAAK,MAAM,CAACpK,KAAK,EAAEgM,IAAI,CAAC,IAAI7B,KAAK,CAAC1R,OAAO,EAAE,EAAE;AAC3CuT,MAAAA,IAAI,CAAC/N,SAAS,CAAC6H,MAAM,CAACJ,mBAAiB,EAAE1F,KAAK,KAAK,IAAI,CAACqJ,YAAY,CAAC;AACvE,IAAA;AAEA,IAAA,IAAI,CAACgG,0BAA0B,CAAC,IAAI,CAAChG,YAAY,CAAC;IAClD,IAAI,CAACsD,kBAAkB,EAAE;AAC3B,EAAA;AAEAA,EAAAA,kBAAkBA,GAAG;AACnB;AACA;AACA;AACA;AACA,IAAA,IAAI,IAAI,CAAChL,OAAO,CAACwG,IAAI,KAAKJ,SAAS,EAAE;AACnC,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuH,QAAQ,GAAG,IAAI,CAAC5G,SAAS;IAC/B,MAAM6G,SAAS,GAAGD,QAAQ,CAAC1C,WAAW,GAAG0C,QAAQ,CAACzC,WAAW;AAE7D,IAAA,IAAI2C,OAAO;AACX,IAAA,IAAIC,KAAK;IAET,IAAIF,SAAS,GAAG,CAAC,EAAE;AACjB;AACA;AACA;AACA;MACA,MAAM/G,QAAQ,GAAGnM,IAAI,CAAC6Q,GAAG,CAACoC,QAAQ,CAAChC,UAAU,CAAC;MAC9CkC,OAAO,GAAGhH,QAAQ,IAAI,CAAC;AACvBiH,MAAAA,KAAK,GAAGjH,QAAQ,IAAI+G,SAAS,GAAG,CAAC;AACnC,IAAA,CAAC,MAAM;AACL;AACA;MACA,MAAMd,IAAI,GAAG,IAAI,CAACrE,SAAS,EAAE,CAACpR,MAAM,GAAG,CAAC;AACxCwW,MAAAA,OAAO,GAAG,IAAI,CAACnG,YAAY,IAAI,CAAC;AAChCoG,MAAAA,KAAK,GAAG,IAAI,CAACpG,YAAY,IAAIoF,IAAI;AACnC,IAAA;IAEA,IAAI,CAACiB,oBAAoB,CAAC,IAAI,CAAC7G,aAAa,EAAE2G,OAAO,CAAC;IACtD,IAAI,CAACE,oBAAoB,CAAC,IAAI,CAAC5G,aAAa,EAAE2G,KAAK,CAAC;AACtD,EAAA;AAEAC,EAAAA,oBAAoBA,CAACC,QAAQ,EAAEzR,QAAQ,EAAE;AACvC,IAAA,KAAK,MAAM0R,OAAO,IAAID,QAAQ,EAAE;AAC9B;AACA;AACA,MAAA,IAAIzR,QAAQ,IAAI0R,OAAO,KAAKpT,QAAQ,CAACoD,aAAa,EAAE;AAClD,QAAA,MAAMiQ,QAAQ,GAAGF,QAAQ,KAAK,IAAI,CAAC9G,aAAa,GAAG,IAAI,CAACC,aAAa,GAAG,IAAI,CAACD,aAAa;QAC1F,MAAMiH,QAAQ,GAAGD,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAACnH,SAAS;AAC9C;AACA;QACAoH,QAAQ,CAACC,KAAK,CAAC;AAAEC,UAAAA,aAAa,EAAE;AAAK,SAAC,CAAC;AACzC,MAAA;MAEAJ,OAAO,CAAC1R,QAAQ,GAAGA,QAAQ;AAC7B,IAAA;AACF,EAAA;EAEAmR,0BAA0BA,CAACrP,KAAK,EAAE;AAChC,IAAA,IAAI,CAAC,IAAI,CAAC2I,kBAAkB,EAAE;AAC5B,MAAA;AACF,IAAA;IAEA,MAAM8C,MAAM,GAAG1I,cAAc,CAACE,OAAO,CAACmE,eAAe,EAAE,IAAI,CAACuB,kBAAkB,CAAC;AAC/E,IAAA,IAAI8C,MAAM,EAAE;AACVA,MAAAA,MAAM,CAACxN,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C+F,MAAAA,MAAM,CAAC7Q,eAAe,CAAC,cAAc,CAAC;AACxC,IAAA;AAEA,IAAA,MAAMqV,SAAS,GAAGlN,cAAc,CAACE,OAAO,CAAC,CAAA,mBAAA,EAAsBjD,KAAK,CAAA,EAAA,CAAI,EAAE,IAAI,CAAC2I,kBAAkB,CAAC;AAClG,IAAA,IAAIsH,SAAS,EAAE;AACbA,MAAAA,SAAS,CAAChS,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AAC1CuK,MAAAA,SAAS,CAACvV,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC;AAChD,IAAA;AACF,EAAA;AAEAiQ,EAAAA,eAAeA,CAAC3K,KAAK,EAAEhH,MAAM,EAAE;IAC7B,IAAIgB,MAAM,CAACkW,KAAK,CAAClQ,KAAK,CAAC,IAAIhH,MAAM,KAAK,CAAC,EAAE;AACvC,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAIgH,KAAK,GAAG,CAAC,EAAE;MACb,OAAO,IAAI,CAACmQ,YAAY,EAAE,GAAGnX,MAAM,GAAG,CAAC,GAAG,IAAI;AAChD,IAAA;AAEA,IAAA,IAAIgH,KAAK,GAAGhH,MAAM,GAAG,CAAC,EAAE;MACtB,OAAO,IAAI,CAACmX,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI;AACvC,IAAA;AAEA,IAAA,OAAOnQ,KAAK;AACd,EAAA;;AAEA;AACA;AACAmQ,EAAAA,YAAYA,GAAG;AACb,IAAA,OAAO,IAAI,CAACxO,OAAO,CAACwG,IAAI,KAAKH,SAAS,IAAI,IAAI,CAACrG,OAAO,CAACwG,IAAI,KAAKF,SAAS;AAC3E,EAAA;;AAEA;AACA;AACA;AACAuC,EAAAA,QAAQA,GAAG;AACT,IAAA,IAAI,IAAI,CAACS,OAAO,EAAE,IAAI,IAAI,CAACb,SAAS,EAAE,CAACpR,MAAM,GAAG,CAAC,EAAE;AACjD,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,MAAMoX,MAAM,GAAGvT,gBAAgB,CAAC,IAAI,CAAC6E,QAAQ,CAAC;AAC9C,IAAA,MAAM2O,GAAG,GAAG7N,IAAI,IAAIxI,MAAM,CAAC+C,UAAU,CAACqT,MAAM,CAAC1S,gBAAgB,CAAC8E,IAAI,CAAC,CAAC,IAAI,CAAC;;AAEzE;AACA;AACA,IAAA,OAAO,CAAC6N,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAC5CA,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,IACrC,CAAC,IAAI,CAAC3O,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACgP,iBAAiB,CAAC,IACpD,CAAC,IAAI,CAAClF,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACiP,eAAe,CAAC;AACtD,EAAA;AAEAkE,EAAAA,UAAUA,CAACC,IAAI,EAAEpB,EAAE,EAAE;AACnB,IAAA,MAAM4E,MAAM,GAAG5E,EAAE,GAAGoB,IAAI;IACxB,IAAInM,OAAK,EAAE,EAAE;AACX,MAAA,OAAO2P,MAAM,GAAGrI,eAAe,GAAGD,cAAc;AAClD,IAAA;AAEA,IAAA,OAAOsI,MAAM,GAAGtI,cAAc,GAAGC,eAAe;AAClD,EAAA;AAEA8D,EAAAA,iBAAiBA,CAACjK,KAAK,GAAG,IAAI,CAACqJ,YAAY,EAAE;AAC3C,IAAA,MAAMjB,QAAQ,GAAG,IAAI,CAACkI,aAAa,CAACtQ,KAAK,CAAC;AAC1C;AACA,IAAA,IAAI,CAAC0B,QAAQ,CAAC6J,KAAK,CAACgF,WAAW,CAACtJ,iBAAiB,EAAE,CAAA,EAAGmB,QAAQ,CAAA,EAAA,CAAI,CAAC;AACnE,IAAA,IAAI,CAACW,SAAS,GAAGtJ,UAAU,CAAC,MAAM;AAChC;AACA;AACA;AACA;AACA,MAAA,MAAM+Q,QAAQ,GAAG,IAAI,CAACC,cAAc,EAAE;MACtC,IAAI,CAAC3G,eAAe,EAAE;;AAEtB;AACA;MACA,IAAI0G,QAAQ,KAAK,IAAI,EAAE;QACrB,IAAI,CAAClI,KAAK,EAAE;AACZ,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC2B,iBAAiB,CAACuG,QAAQ,CAAC;IAClC,CAAC,EAAEpI,QAAQ,CAAC;AACd,EAAA;;AAEA;AACA;AACA;AACAqI,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAAC9F,eAAe,CAAC,IAAI,CAACd,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAACO,SAAS,EAAE,CAACpR,MAAM,CAAC;AAC5E,EAAA;AAEAsX,EAAAA,aAAaA,CAACtQ,KAAK,GAAG,IAAI,CAACqJ,YAAY,EAAE;IACvC,MAAM2C,IAAI,GAAG,IAAI,CAAC5B,SAAS,EAAE,CAACpK,KAAK,CAAC;IACpC,MAAMoI,QAAQ,GAAG4D,IAAI,GAAGhS,MAAM,CAACsQ,QAAQ,CAAC0B,IAAI,CAAC3Q,YAAY,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAGrB,MAAM,CAAC0W,GAAG;AAC/F,IAAA,OAAO1W,MAAM,CAACkW,KAAK,CAAC9H,QAAQ,CAAC,GAAG,IAAI,CAACzG,OAAO,CAACyG,QAAQ,GAAGA,QAAQ;AAClE,EAAA;AAEAuD,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,IAAI,CAAC,IAAI,CAACvC,QAAQ,EAAE;AAClB,MAAA;AACF,IAAA;IAEA,IAAI,CAACM,KAAK,EAAE;AACd,EAAA;;AAEA;AACAkC,EAAAA,qBAAqBA,GAAG;IACtB,IAAI,CAACxC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACd,KAAK,EAAE;IACZ,IAAI,CAACqB,uBAAuB,EAAE;AAChC,EAAA;AAEAgH,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAACvH,QAAQ,EAAE;MACjB,IAAI,CAACwC,qBAAqB,EAAE;AAC5B,MAAA;AACF,IAAA;IAEA,IAAI,CAACxC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACM,KAAK,EAAE;IACZ,IAAI,CAACC,uBAAuB,EAAE;AAChC,EAAA;AAEAA,EAAAA,uBAAuBA,GAAG;AACxB,IAAA,IAAI,CAAC,IAAI,CAACf,iBAAiB,EAAE;AAC3B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,iBAAiB,CAAC3K,SAAS,CAAC6H,MAAM,CAACiB,iBAAiB,EAAE,CAAC,IAAI,CAACqC,QAAQ,CAAC;AAE1E,IAAA,MAAMwH,KAAK,GAAG,IAAI,CAAChI,iBAAiB,CAACvN,YAAY,CAC/C,IAAI,CAAC+N,QAAQ,GAAG,qBAAqB,GAAG,oBAC1C,CAAC;AAED,IAAA,IAAIwH,KAAK,EAAE;MACT,IAAI,CAAChI,iBAAiB,CAAClO,YAAY,CAAC,YAAY,EAAEkW,KAAK,CAAC;AAC1D,IAAA;AACF,EAAA;AAEA3F,EAAAA,OAAOA,GAAG;IACR,OAAO,IAAI,CAACvJ,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC;AAC1D,EAAA;AAEAqF,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,OAAO,OAAO7O,MAAM,KAAK,WAAW,IAClC,OAAOA,MAAM,CAACmV,UAAU,KAAK,UAAU,IACvCnV,MAAM,CAACmV,UAAU,CAAC,kCAAkC,CAAC,CAACzN,OAAO;AACjE,EAAA;AAEAgH,EAAAA,SAASA,GAAG;IACV,OAAOrH,cAAc,CAAC7L,IAAI,CAACmQ,aAAa,EAAE,IAAI,CAAC3F,QAAQ,CAAC;AAC1D,EAAA;AAEAsI,EAAAA,cAAcA,GAAG;IACf,IAAI,IAAI,CAACjB,SAAS,EAAE;AAClB+H,MAAAA,YAAY,CAAC,IAAI,CAAC/H,SAAS,CAAC;MAC5B,IAAI,CAACA,SAAS,GAAG,IAAI;AACvB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA7S,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAE8B,mBAAmB,EAAE,UAAU5R,KAAK,EAAE;AACpF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAACtN,MAAM,IAAI,CAACA,MAAM,CAACuH,SAAS,CAACrG,QAAQ,CAAC+O,mBAAmB,CAAC,EAAE;AAC9D,IAAA;AACF,EAAA;EAEA7Q,KAAK,CAACyO,cAAc,EAAE;AAEtB,EAAA,MAAMwM,QAAQ,GAAGtI,QAAQ,CAACnG,mBAAmB,CAAC5L,MAAM,CAAC;;AAErD;EACAqa,QAAQ,CAACnF,qBAAqB,EAAE;AAEhC,EAAA,MAAMoF,UAAU,GAAG,IAAI,CAAC3V,YAAY,CAAC,kBAAkB,CAAC;AAExD,EAAA,IAAI2V,UAAU,EAAE;AACdD,IAAAA,QAAQ,CAACnH,EAAE,CAACoH,UAAU,CAAC;AACvB,IAAA;AACF,EAAA;EAEA,IAAIxW,WAAW,CAACY,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE;IAC1D2V,QAAQ,CAACrc,IAAI,EAAE;AACf,IAAA;AACF,EAAA;EAEAqc,QAAQ,CAACvN,IAAI,EAAE;AACjB,CAAC,CAAC;AAEFtN,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAE6B,mBAAmB,EAAE,UAAU3R,KAAK,EAAE;AACpF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAACtN,MAAM,IAAI,CAACA,MAAM,CAACuH,SAAS,CAACrG,QAAQ,CAAC+O,mBAAmB,CAAC,EAAE;AAC9D,IAAA;AACF,EAAA;EAEA7Q,KAAK,CAACyO,cAAc,EAAE;EAEtBkE,QAAQ,CAACnG,mBAAmB,CAAC5L,MAAM,CAAC,CAACia,gBAAgB,EAAE;AACzD,CAAC,CAAC;AAEFza,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,qBAAmB,EAAE,MAAM;AACjD,EAAA,MAAMuK,SAAS,GAAGlO,cAAc,CAAC7L,IAAI,CAAC2Q,sBAAsB,CAAC;AAE7D,EAAA,KAAK,MAAMkJ,QAAQ,IAAIE,SAAS,EAAE;AAChCxI,IAAAA,QAAQ,CAACnG,mBAAmB,CAACyO,QAAQ,CAAC;AACxC,EAAA;AACF,CAAC,CAAC;;ACn5BF;AACA;AACA;AACA;AACA;AACA;;;AAUA;AACA;AACA;;AAEA,MAAMxQ,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMyL,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAMoP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMN,iBAAe,GAAG,MAAM;AAC9B,MAAMmM,mBAAmB,GAAG,UAAU;AACtC,MAAMC,qBAAqB,GAAG,YAAY;AAC1C,MAAMC,oBAAoB,GAAG,WAAW;AACxC,MAAMC,0BAA0B,GAAG,CAAA,QAAA,EAAWH,mBAAmB,CAAA,EAAA,EAAKA,mBAAmB,CAAA,CAAE;AAC3F,MAAMI,qBAAqB,GAAG,qBAAqB;AAEnD,MAAMC,KAAK,GAAG,OAAO;AACrB,MAAMC,MAAM,GAAG,QAAQ;AAEvB,MAAMC,gBAAgB,GAAG,sCAAsC;AAC/D,MAAMlM,sBAAoB,GAAG,6BAA6B;AAE1D,MAAMtF,SAAO,GAAG;AACdyR,EAAAA,MAAM,EAAE,IAAI;AACZhM,EAAAA,MAAM,EAAE;AACV,CAAC;AAED,MAAMxF,aAAW,GAAG;AAClBwR,EAAAA,MAAM,EAAE,gBAAgB;AACxBhM,EAAAA,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;;AAEA,MAAMiM,QAAQ,SAAStQ,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACsR,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACC,aAAa,GAAG,EAAE;AAEvB,IAAA,MAAMC,UAAU,GAAGnP,cAAc,CAAC7L,IAAI,CAACyO,sBAAoB,CAAC;AAE5D,IAAA,KAAK,MAAMwM,IAAI,IAAID,UAAU,EAAE;AAC7B,MAAA,MAAM3b,QAAQ,GAAGwM,cAAc,CAACgB,sBAAsB,CAACoO,IAAI,CAAC;AAC5D,MAAA,MAAMC,aAAa,GAAGrP,cAAc,CAAC7L,IAAI,CAACX,QAAQ,CAAC,CAChD0E,MAAM,CAACoX,YAAY,IAAIA,YAAY,KAAK,IAAI,CAAC3Q,QAAQ,CAAC;AAEzD,MAAA,IAAInL,QAAQ,KAAK,IAAI,IAAI6b,aAAa,CAACpZ,MAAM,EAAE;AAC7C,QAAA,IAAI,CAACiZ,aAAa,CAAC1O,IAAI,CAAC4O,IAAI,CAAC;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAACG,mBAAmB,EAAE;AAE1B,IAAA,IAAI,CAAC,IAAI,CAAC3Q,OAAO,CAACmQ,MAAM,EAAE;AACxB,MAAA,IAAI,CAACS,yBAAyB,CAAC,IAAI,CAACN,aAAa,EAAE,IAAI,CAACO,QAAQ,EAAE,CAAC;AACrE,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC7Q,OAAO,CAACmE,MAAM,EAAE;MACvB,IAAI,CAACA,MAAM,EAAE;AACf,IAAA;AACF,EAAA;;AAEA;EACA,WAAWzF,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAAC0M,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACC,IAAI,EAAE;AACb,IAAA,CAAC,MAAM;MACL,IAAI,CAACC,IAAI,EAAE;AACb,IAAA;AACF,EAAA;AAEAA,EAAAA,IAAIA,GAAG;IACL,IAAI,IAAI,CAACV,gBAAgB,IAAI,IAAI,CAACQ,QAAQ,EAAE,EAAE;AAC5C,MAAA;AACF,IAAA;IAEA,IAAIG,cAAc,GAAG,EAAE;;AAEvB;AACA,IAAA,IAAI,IAAI,CAAChR,OAAO,CAACmQ,MAAM,EAAE;AACvBa,MAAAA,cAAc,GAAG,IAAI,CAACC,sBAAsB,CAACf,gBAAgB,CAAC,CAC3D5W,MAAM,CAACnH,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC4N,QAAQ,CAAC,CAC5CkB,GAAG,CAAC9O,OAAO,IAAIie,QAAQ,CAACzP,mBAAmB,CAACxO,OAAO,EAAE;AAAEgS,QAAAA,MAAM,EAAE;AAAM,OAAC,CAAC,CAAC;AAC7E,IAAA;IAEA,IAAI6M,cAAc,CAAC3Z,MAAM,IAAI2Z,cAAc,CAAC,CAAC,CAAC,CAACX,gBAAgB,EAAE;AAC/D,MAAA;AACF,IAAA;IAEA,MAAMa,UAAU,GAAG3c,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,YAAU,CAAC;IAClE,IAAI2B,UAAU,CAACtN,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMuN,cAAc,IAAIH,cAAc,EAAE;MAC3CG,cAAc,CAACL,IAAI,EAAE;AACvB,IAAA;AAEA,IAAA,MAAMM,SAAS,GAAG,IAAI,CAACC,aAAa,EAAE;IAEtC,IAAI,CAACtR,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC0c,mBAAmB,CAAC;IACnD,IAAI,CAAC5P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACqH,qBAAqB,CAAC;IAElD,IAAI,CAAC7P,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,CAAC;IAElC,IAAI,CAACR,yBAAyB,CAAC,IAAI,CAACN,aAAa,EAAE,IAAI,CAAC;IACxD,IAAI,CAACD,gBAAgB,GAAG,IAAI;IAE5B,MAAMiB,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACjB,gBAAgB,GAAG,KAAK;MAE7B,IAAI,CAACtQ,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC2c,qBAAqB,CAAC;MACrD,IAAI,CAAC7P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACoH,mBAAmB,EAAEnM,iBAAe,CAAC;MAEjE,IAAI,CAACzD,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,EAAE;MAEnC7c,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,aAAW,CAAC;IAClD,CAAC;AAED,IAAA,MAAM+B,oBAAoB,GAAGH,SAAS,CAAC,CAAC,CAAC,CAACxR,WAAW,EAAE,GAAGwR,SAAS,CAAC7Z,KAAK,CAAC,CAAC,CAAC;AAC5E,IAAA,MAAMia,UAAU,GAAG,CAAA,MAAA,EAASD,oBAAoB,CAAA,CAAE;IAElD,IAAI,CAAC/Q,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,IAAI,CAACA,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,CAAA,EAAG,IAAI,CAACrR,QAAQ,CAACyR,UAAU,CAAC,CAAA,EAAA,CAAI;AACnE,EAAA;AAEAV,EAAAA,IAAIA,GAAG;IACL,IAAI,IAAI,CAACT,gBAAgB,IAAI,CAAC,IAAI,CAACQ,QAAQ,EAAE,EAAE;AAC7C,MAAA;AACF,IAAA;IAEA,MAAMK,UAAU,GAAG3c,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,YAAU,CAAC;IAClE,IAAIyB,UAAU,CAACtN,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,MAAMwN,SAAS,GAAG,IAAI,CAACC,aAAa,EAAE;AAEtC,IAAA,IAAI,CAACtR,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,CAAA,EAAG,IAAI,CAACrR,QAAQ,CAACwM,qBAAqB,EAAE,CAAC6E,SAAS,CAAC,CAAA,EAAA,CAAI;AAExFpU,IAAAA,MAAM,CAAC,IAAI,CAAC+C,QAAQ,CAAC;IAErB,IAAI,CAACA,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACqH,qBAAqB,CAAC;IAClD,IAAI,CAAC7P,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC0c,mBAAmB,EAAEnM,iBAAe,CAAC;AAEpE,IAAA,KAAK,MAAM/L,OAAO,IAAI,IAAI,CAAC6Y,aAAa,EAAE;AACxC,MAAA,MAAMne,OAAO,GAAGiP,cAAc,CAACiB,sBAAsB,CAAC5K,OAAO,CAAC;MAE9D,IAAItF,OAAO,IAAI,CAAC,IAAI,CAAC0e,QAAQ,CAAC1e,OAAO,CAAC,EAAE;QACtC,IAAI,CAACye,yBAAyB,CAAC,CAACnZ,OAAO,CAAC,EAAE,KAAK,CAAC;AAClD,MAAA;AACF,IAAA;IAEA,IAAI,CAAC4Y,gBAAgB,GAAG,IAAI;IAE5B,MAAMiB,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACjB,gBAAgB,GAAG,KAAK;MAC7B,IAAI,CAACtQ,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC2c,qBAAqB,CAAC;MACrD,IAAI,CAAC7P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACoH,mBAAmB,CAAC;MAChDpb,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,cAAY,CAAC;IACnD,CAAC;IAED,IAAI,CAAC3P,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,EAAE;IAEnC,IAAI,CAAC5Q,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAAC;AACpD,EAAA;;AAEA;AACA8Q,EAAAA,QAAQA,CAAC1e,OAAO,GAAG,IAAI,CAAC4N,QAAQ,EAAE;AAChC,IAAA,OAAO5N,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACpD,EAAA;EAEAvE,iBAAiBA,CAACF,MAAM,EAAE;IACxBA,MAAM,CAACoF,MAAM,GAAG1N,OAAO,CAACsI,MAAM,CAACoF,MAAM,CAAC,CAAA;IACtCpF,MAAM,CAACoR,MAAM,GAAGzU,UAAU,CAACqD,MAAM,CAACoR,MAAM,CAAC;AACzC,IAAA,OAAOpR,MAAM;AACf,EAAA;AAEAsS,EAAAA,aAAaA,GAAG;AACd,IAAA,OAAO,IAAI,CAACtR,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAAC8Z,qBAAqB,CAAC,GAAGC,KAAK,GAAGC,MAAM;AACjF,EAAA;AAEAU,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,IAAI,CAAC,IAAI,CAAC3Q,OAAO,CAACmQ,MAAM,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM5O,QAAQ,GAAG,IAAI,CAAC0P,sBAAsB,CAACjN,sBAAoB,CAAC;AAElE,IAAA,KAAK,MAAM7R,OAAO,IAAIoP,QAAQ,EAAE;AAC9B,MAAA,MAAMkQ,QAAQ,GAAGrQ,cAAc,CAACiB,sBAAsB,CAAClQ,OAAO,CAAC;AAE/D,MAAA,IAAIsf,QAAQ,EAAE;AACZ,QAAA,IAAI,CAACb,yBAAyB,CAAC,CAACze,OAAO,CAAC,EAAE,IAAI,CAAC0e,QAAQ,CAACY,QAAQ,CAAC,CAAC;AACpE,MAAA;AACF,IAAA;AACF,EAAA;EAEAR,sBAAsBA,CAACrc,QAAQ,EAAE;AAC/B,IAAA,MAAM2M,QAAQ,GAAGH,cAAc,CAAC7L,IAAI,CAACua,0BAA0B,EAAE,IAAI,CAAC9P,OAAO,CAACmQ,MAAM,CAAC;AACrF;IACA,OAAO/O,cAAc,CAAC7L,IAAI,CAACX,QAAQ,EAAE,IAAI,CAACoL,OAAO,CAACmQ,MAAM,CAAC,CAAC7W,MAAM,CAACnH,OAAO,IAAI,CAACoP,QAAQ,CAACxK,QAAQ,CAAC5E,OAAO,CAAC,CAAC;AAC1G,EAAA;AAEAye,EAAAA,yBAAyBA,CAACc,YAAY,EAAEC,MAAM,EAAE;AAC9C,IAAA,IAAI,CAACD,YAAY,CAACra,MAAM,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMlF,OAAO,IAAIuf,YAAY,EAAE;MAClCvf,OAAO,CAACmK,SAAS,CAAC6H,MAAM,CAAC0L,oBAAoB,EAAE,CAAC8B,MAAM,CAAC;AACvDxf,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE4Y,MAAM,CAAC;AAC/C,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEApd,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF;AACA,EAAA,IAAIA,KAAK,CAACY,MAAM,CAAC4N,OAAO,KAAK,GAAG,IAAKxO,KAAK,CAACE,cAAc,IAAIF,KAAK,CAACE,cAAc,CAACsO,OAAO,KAAK,GAAI,EAAE;IAClGxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;EAEA,KAAK,MAAMzQ,OAAO,IAAIiP,cAAc,CAACkB,+BAA+B,CAAC,IAAI,CAAC,EAAE;AAC1E8N,IAAAA,QAAQ,CAACzP,mBAAmB,CAACxO,OAAO,EAAE;AAAEgS,MAAAA,MAAM,EAAE;AAAM,KAAC,CAAC,CAACA,MAAM,EAAE;AACnE,EAAA;AACF,CAAC,CAAC;;AC3QF;AACA;AACA;AACA;;AAKA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,MAAM,YAAY,GAAG,CAAC,KAAK;AAC3B,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,MAAM,eAAe,GAAG;AACxB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,MAAM,EAAE,KAAK;AACf,EAAE,GAAG,EAAE;AACP,CAAC;AACD,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE;AAChC,EAAE,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;AAC3D;AACA,SAAS,OAAO,CAAC,SAAS,EAAE;AAC5B,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,SAAS,YAAY,CAAC,SAAS,EAAE;AACjC,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,SAAS,eAAe,CAAC,IAAI,EAAE;AAC/B,EAAE,OAAO,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;AACjC;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,OAAO,IAAI,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO;AAC1C;AACA,SAAS,WAAW,CAAC,SAAS,EAAE;AAChC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAChC,EAAE,OAAO,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3D;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,EAAE,OAAO,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAChD;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;AAClD,EAAE,IAAI,GAAG,KAAK,MAAM,EAAE;AACtB,IAAI,GAAG,GAAG,KAAK;AACf,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC;AAC7C,EAAE,IAAI,iBAAiB,GAAG,aAAa,KAAK,GAAG,GAAG,SAAS,MAAM,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,KAAK;AACrJ,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxD,IAAI,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AAC/D,EAAE;AACF,EAAE,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACrE;AACA,SAAS,qBAAqB,CAAC,SAAS,EAAE;AAC1C,EAAE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAC3D,EAAE,OAAO,CAAC,6BAA6B,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;AACxH;AACA,SAAS,6BAA6B,CAAC,SAAS,EAAE;AAClD,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5G;AACA,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AACrC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;AACrC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrC,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;AACzC,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,KAAK;AACd,IAAI,KAAK,QAAQ;AACjB,MAAM,IAAI,GAAG,EAAE,OAAO,OAAO,GAAG,WAAW,GAAG,WAAW;AACzD,MAAM,OAAO,OAAO,GAAG,WAAW,GAAG,WAAW;AAChD,IAAI,KAAK,MAAM;AACf,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,OAAO,GAAG,WAAW,GAAG,WAAW;AAChD,IAAI;AACJ,MAAM,OAAO,EAAE;AACf;AACA;AACA,SAAS,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE;AAC7E,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,EAAE,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,KAAK,OAAO,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC;AACnD,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACjE,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,SAAS,oBAAoB,CAAC,SAAS,EAAE;AACzC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACtC,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,GAAG;AACP,GAAG;AACH;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,OAAO,OAAO,OAAO,KAAK,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG;AACtE,IAAI,GAAG,EAAE,OAAO;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,IAAI,EAAE;AACV,GAAG;AACH;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,EAAE,MAAM;AACR,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK;AACT,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK;AACpB,IAAI,MAAM,EAAE,CAAC,GAAG,MAAM;AACtB,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AClIA,SAAS,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE;AAC1D,EAAE,IAAI;AACN,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACzC,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;AACnD,EAAE,MAAM,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE,MAAM,UAAU,GAAG,QAAQ,KAAK,GAAG;AACrC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;AACxE,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC1E,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;AAC5E,EAAE,IAAI,MAAM;AACZ,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,KAAK;AACd,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,OAAO;AAClB,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClC,OAAO;AACP,MAAM;AACN,IAAI,KAAK,QAAQ;AACjB,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,OAAO;AAClB,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;AACnC,OAAO;AACP,MAAM;AACN,IAAI,KAAK,OAAO;AAChB,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK;AACxC,QAAQ,CAAC,EAAE;AACX,OAAO;AACP,MAAM;AACN,IAAI,KAAK,MAAM;AACf,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK;AACvC,QAAQ,CAAC,EAAE;AACX,OAAO;AACP,MAAM;AACN,IAAI;AACJ,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;AACrB,OAAO;AACP;AACA,EAAE,QAAQ,YAAY,CAAC,SAAS,CAAC;AACjC,IAAI,KAAK,OAAO;AAChB,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM;AACN,IAAI,KAAK,KAAK;AACd,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM;AACN;AACA,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9C,EAAE,IAAI,qBAAqB;AAC3B,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,MAAM;AACR,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG,GAAG,KAAK;AACX,EAAE,MAAM;AACR,IAAI,QAAQ,GAAG,mBAAmB;AAClC,IAAI,YAAY,GAAG,UAAU;AAC7B,IAAI,cAAc,GAAG,UAAU;AAC/B,IAAI,WAAW,GAAG,KAAK;AACvB,IAAI,OAAO,GAAG;AACd,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9B,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACjD,EAAE,MAAM,UAAU,GAAG,cAAc,KAAK,UAAU,GAAG,WAAW,GAAG,UAAU;AAC7E,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;AACrE,EAAE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC;AAC7E,IAAI,OAAO,EAAE,CAAC,CAAC,qBAAqB,GAAG,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,cAAc,KAAK,OAAO,QAAQ,CAAC,kBAAkB,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvS,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,IAAI,GAAG,cAAc,KAAK,UAAU,GAAG;AAC/C,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;AAC/B,IAAI,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;AAC3B,GAAG,GAAG,KAAK,CAAC,SAAS;AACrB,EAAE,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtH,EAAE,MAAM,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK;AAC3L,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE;AACP,GAAG,GAAG;AACN,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE;AACP,GAAG;AACH,EAAE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,qDAAqD,GAAG,MAAM,QAAQ,CAAC,qDAAqD,CAAC;AACnL,IAAI,QAAQ;AACZ,IAAI,IAAI;AACR,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,CAAC,GAAG,IAAI,CAAC;AACZ,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;AAC7F,IAAI,MAAM,EAAE,CAAC,iBAAiB,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC;AACzG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;AACjG,IAAI,KAAK,EAAE,CAAC,iBAAiB,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,WAAW,CAAC;AACpG,GAAG;AACH;;AAEA;AACA,MAAM,eAAe,GAAG,EAAE;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMyN,iBAAe,GAAG,OAAO,SAAS,EAAE,QAAQ,EAAE,MAAM,KAAK;AAC/D,EAAE,MAAM;AACR,IAAI,SAAS,GAAG,QAAQ;AACxB,IAAI,QAAQ,GAAG,UAAU;AACzB,IAAI,UAAU,GAAG,EAAE;AACnB,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ,EAAE,MAAM,0BAA0B,GAAG,QAAQ,CAAC,cAAc,GAAG,QAAQ,GAAG;AAC1E,IAAI,GAAG,QAAQ;AACf,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChF,EAAE,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;AAC7C,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE,IAAI;AACN,IAAI,CAAC;AACL,IAAI;AACJ,GAAG,GAAG,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC;AACvD,EAAE,IAAI,iBAAiB,GAAG,SAAS;AACnC,EAAE,IAAI,UAAU,GAAG,CAAC;AACpB,EAAE,MAAM,cAAc,GAAG,EAAE;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM;AACN,KAAK,GAAG,iBAAiB;AACzB,IAAI,MAAM;AACV,MAAM,CAAC,EAAE,KAAK;AACd,MAAM,CAAC,EAAE,KAAK;AACd,MAAM,IAAI;AACV,MAAM;AACN,KAAK,GAAG,MAAM,EAAE,CAAC;AACjB,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,SAAS,EAAE,iBAAiB;AAClC,MAAM,QAAQ;AACd,MAAM,cAAc;AACpB,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,0BAA0B;AAC1C,MAAM,QAAQ,EAAE;AAChB,QAAQ,SAAS;AACjB,QAAQ;AACR;AACA,KAAK,CAAC;AACN,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC;AACjC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC;AACjC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG;AAC3B,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AAC7B,MAAM,GAAG;AACT,KAAK;AACL,IAAI,IAAI,KAAK,IAAI,UAAU,GAAG,eAAe,EAAE;AAC/C,MAAM,UAAU,EAAE;AAClB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;AAC7B,UAAU,iBAAiB,GAAG,KAAK,CAAC,SAAS;AAC7C,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,UAAU,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;AACxE,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB,YAAY;AACZ,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK;AAC1B,QAAQ;AACR,QAAQ,CAAC;AACT,UAAU,CAAC;AACX,UAAU;AACV,SAAS,GAAG,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,CAAC;AACrE,MAAM;AACN,MAAM,CAAC,GAAG,EAAE;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,SAAS,EAAE,iBAAiB;AAChC,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAK,GAAG,OAAO,KAAK;AAC1B,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE;AAClB,IAAI,MAAM;AACV,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,SAAS;AACf,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM;AACN,KAAK,GAAG,KAAK;AACb;AACA,IAAI,MAAM;AACV,MAAM,OAAO;AACb,MAAM,OAAO,GAAG;AAChB,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,CAAC;AACP,MAAM;AACN,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACjE,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,GAAG;AAChC,IAAI,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM;AAC5C,IAAI,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;AAChD,IAAI,MAAM,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa;AAC/D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3G,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1D,IAAI,MAAM,iBAAiB,GAAG,OAAO,QAAQ,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACnH,IAAI,IAAI,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC;;AAE1E;AACA,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAC/G,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1E,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG,OAAO,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC;;AAEzD;AACA;AACA,IAAI,MAAM,sBAAsB,GAAG,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACnF,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;AAC1E,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;;AAE1E;AACA;AACA,IAAI,MAAM,KAAK,GAAG,UAAU;AAC5B,IAAI,MAAM,GAAG,GAAG,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,UAAU;AACjE,IAAI,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB;AACnF,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;;AAE5C;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACvN,IAAI,MAAM,eAAe,GAAG,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC;AAChG,IAAI,OAAO;AACX,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe;AAC5C,MAAM,IAAI,EAAE;AACZ,QAAQ,CAAC,IAAI,GAAG,MAAM;AACtB,QAAQ,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe;AACvD,QAAQ,IAAI,eAAe,IAAI;AAC/B,UAAU;AACV,SAAS;AACT,OAAO;AACP,MAAM,KAAK,EAAE;AACb,KAAK;AACL,EAAE;AACF,CAAC,CAAC;;AAyGF;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,MAAI,GAAG,UAAU,OAAO,EAAE;AAChC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE;AACpB,MAAM,IAAI,qBAAqB,EAAE,oBAAoB;AACrD,MAAM,MAAM;AACZ,QAAQ,SAAS;AACjB,QAAQ,cAAc;AACtB,QAAQ,KAAK;AACb,QAAQ,gBAAgB;AACxB,QAAQ,QAAQ;AAChB,QAAQ;AACR,OAAO,GAAG,KAAK;AACf,MAAM,MAAM;AACZ,QAAQ,QAAQ,EAAE,aAAa,GAAG,IAAI;AACtC,QAAQ,SAAS,EAAE,cAAc,GAAG,IAAI;AACxC,QAAQ,kBAAkB,EAAE,2BAA2B;AACvD,QAAQ,gBAAgB,GAAG,SAAS;AACpC,QAAQ,yBAAyB,GAAG,MAAM;AAC1C,QAAQ,aAAa,GAAG,IAAI;AAC5B,QAAQ,GAAG;AACX,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;;AAElC;AACA;AACA;AACA;AACA,MAAM,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,IAAI,qBAAqB,CAAC,eAAe,EAAE;AAC3G,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACrC,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,gBAAgB;AAC5E,MAAM,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7F,MAAM,MAAM,kBAAkB,GAAG,2BAA2B,KAAK,eAAe,IAAI,CAAC,aAAa,GAAG,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AACxL,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,KAAK,MAAM;AAC/E,MAAM,IAAI,CAAC,2BAA2B,IAAI,4BAA4B,EAAE;AACxE,QAAQ,kBAAkB,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,EAAE,GAAG,CAAC,CAAC;AAC9H,MAAM;AACN,MAAM,MAAM,UAAU,GAAG,CAAC,gBAAgB,EAAE,GAAG,kBAAkB,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,EAAE;AAC1B,MAAM,IAAI,aAAa,GAAG,CAAC,CAAC,oBAAoB,GAAG,cAAc,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,SAAS,KAAK,EAAE;AAChI,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM;AACN,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC;AAC9D,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,MAAM;AACN,MAAM,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE;AACzC,QAAQ,SAAS;AACjB,QAAQ;AACR,OAAO,CAAC;;AAER;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;AAC/C,QAAQ,IAAI,qBAAqB,EAAE,qBAAqB;AACxD,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,qBAAqB,GAAG,cAAc,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC;AACnI,QAAQ,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC;AACnD,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,MAAM,uBAAuB,GAAG,cAAc,KAAK,WAAW,GAAG,eAAe,KAAK,WAAW,CAAC,aAAa,CAAC,GAAG,KAAK;AACjI,UAAU,IAAI,CAAC,uBAAuB;AACtC;AACA;AACA,UAAU,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;AAC9G;AACA,YAAY,OAAO;AACnB,cAAc,IAAI,EAAE;AACpB,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,SAAS,EAAE;AAC3B,eAAe;AACf,cAAc,KAAK,EAAE;AACrB,gBAAgB,SAAS,EAAE;AAC3B;AACA,aAAa;AACb,UAAU;AACV,QAAQ;;AAER;AACA;AACA,QAAQ,IAAI,cAAc,GAAG,CAAC,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,SAAS;;AAE3M;AACA,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,UAAU,QAAQ,gBAAgB;AAClC,YAAY,KAAK,SAAS;AAC1B,cAAc;AACd,gBAAgB,IAAI,sBAAsB;AAC1C,gBAAgB,MAAM,SAAS,GAAG,CAAC,sBAAsB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI;AACtF,kBAAkB,IAAI,4BAA4B,EAAE;AACpD,oBAAoB,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,oBAAoB,OAAO,eAAe,KAAK,eAAe;AAC9D;AACA;AACA,oBAAoB,eAAe,KAAK,GAAG;AAC3C,kBAAkB;AAClB,kBAAkB,OAAO,IAAI;AAC7B,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC;AAClN,gBAAgB,IAAI,SAAS,EAAE;AAC/B,kBAAkB,cAAc,GAAG,SAAS;AAC5C,gBAAgB;AAChB,gBAAgB;AAChB,cAAc;AACd,YAAY,KAAK,kBAAkB;AACnC,cAAc,cAAc,GAAG,gBAAgB;AAC/C,cAAc;AACd;AACA,QAAQ;AACR,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;AAC1C,UAAU,OAAO;AACjB,YAAY,KAAK,EAAE;AACnB,cAAc,SAAS,EAAE;AACzB;AACA,WAAW;AACX,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,GAAG;AACH,CAAC;;AA2MD,MAAM,WAAW,gBAAgB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;AAEzD;AACA;;AAEA,eAAe,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE;AACpD,EAAE,MAAM;AACR,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG,GAAG,KAAK;AACX,EAAE,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzF,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG;AACnD,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACtD,EAAE,MAAM,cAAc,GAAG,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC;AACnD,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;;AAE3C;AACA,EAAE,IAAI;AACN,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG;AACrC,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,aAAa,EAAE;AACnB,GAAG,GAAG;AACN,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;AACpC,IAAI,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC;AACtC,IAAI,aAAa,EAAE,QAAQ,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,SAAS,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACtD,IAAI,SAAS,GAAG,SAAS,KAAK,KAAK,GAAG,aAAa,GAAG,EAAE,GAAG,aAAa;AACxE,EAAE;AACF,EAAE,OAAO,UAAU,GAAG;AACtB,IAAI,CAAC,EAAE,SAAS,GAAG,cAAc;AACjC,IAAI,CAAC,EAAE,QAAQ,GAAG;AAClB,GAAG,GAAG;AACN,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa;AAC/B,IAAI,CAAC,EAAE,SAAS,GAAG;AACnB,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAM,GAAG,UAAU,OAAO,EAAE;AAClC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,CAAC;AACf,EAAE;AACF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE;AACpB,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,MAAM;AACZ,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,SAAS;AACjB,QAAQ;AACR,OAAO,GAAG,KAAK;AACf,MAAM,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;;AAEnE;AACA;AACA,MAAM,IAAI,SAAS,MAAM,CAAC,qBAAqB,GAAG,cAAc,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,IAAI,qBAAqB,CAAC,eAAe,EAAE;AACjO,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3B,QAAQ,IAAI,EAAE;AACd,UAAU,GAAG,UAAU;AACvB,UAAU;AACV;AACA,OAAO;AACP,IAAI;AACJ,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAK,GAAG,UAAU,OAAO,EAAE;AACjC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM;AACZ,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,SAAS;AACjB,QAAQ;AACR,OAAO,GAAG,KAAK;AACf,MAAM,MAAM;AACZ,QAAQ,QAAQ,EAAE,aAAa,GAAG,IAAI;AACtC,QAAQ,SAAS,EAAE,cAAc,GAAG,KAAK;AACzC,QAAQ,OAAO,GAAG;AAClB,UAAU,EAAE,EAAE,IAAI,IAAI;AACtB,YAAY,IAAI;AAChB,cAAc,CAAC;AACf,cAAc;AACd,aAAa,GAAG,IAAI;AACpB,YAAY,OAAO;AACnB,cAAc,CAAC;AACf,cAAc;AACd,aAAa;AACb,UAAU;AACV,SAAS;AACT,QAAQ,GAAG;AACX,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAClC,MAAM,MAAM,MAAM,GAAG;AACrB,QAAQ,CAAC;AACT,QAAQ;AACR,OAAO;AACP,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC;AACjD,MAAM,IAAI,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,MAAM,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5C,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,MAAM,OAAO,GAAG,QAAQ,KAAK,GAAG,GAAG,KAAK,GAAG,MAAM;AACzD,QAAQ,MAAM,OAAO,GAAG,QAAQ,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO;AAC7D,QAAQ,MAAM,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;AACrD,QAAQ,MAAM,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;AACrD,QAAQ,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC;AACtD,MAAM;AACN,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,MAAM,OAAO,GAAG,SAAS,KAAK,GAAG,GAAG,KAAK,GAAG,MAAM;AAC1D,QAAQ,MAAM,OAAO,GAAG,SAAS,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO;AAC9D,QAAQ,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AACtD,QAAQ,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AACtD,QAAQ,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC;AACxD,MAAM;AACN,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;AACvC,QAAQ,GAAG,KAAK;AAChB,QAAQ,CAAC,QAAQ,GAAG,aAAa;AACjC,QAAQ,CAAC,SAAS,GAAG;AACrB,OAAO,CAAC;AACR,MAAM,OAAO;AACb,QAAQ,GAAG,aAAa;AACxB,QAAQ,IAAI,EAAE;AACd,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;AAChC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;AAChC,UAAU,OAAO,EAAE;AACnB,YAAY,CAAC,QAAQ,GAAG,aAAa;AACrC,YAAY,CAAC,SAAS,GAAG;AACzB;AACA;AACA,OAAO;AACP,IAAI;AACJ,GAAG;AACH,CAAC;;ACv4BD,SAAS,SAAS,GAAG;AACrB,EAAE,OAAO,OAAO,MAAM,KAAK,WAAW;AACtC;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE;AACF;AACA;AACA;AACA,EAAE,OAAO,WAAW;AACpB;AACA,SAAS,SAAS,CAAC,IAAI,EAAE;AACzB,EAAE,IAAI,mBAAmB;AACzB,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,WAAW,KAAK,MAAM;AAClI;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAClC,EAAE,IAAI,IAAI;AACV,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,eAAe;AAChI;AACA,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI;AACxE;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO;AAC9E;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW;AACtF;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AACzD,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU;AACpF;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,EAAE,MAAM;AACR,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,GAAG9W,kBAAgB,CAAC,OAAO,CAAC;AAC/B,EAAE,OAAO,iCAAiC,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU;AACnI;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,EAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrD;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AAC1C,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;AACf;AACA,EAAE;AACF,EAAE,IAAI;AACN,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;AACf,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,MAAM,YAAY,GAAG,qDAAqD;AAC1E,MAAM,SAAS,GAAG,6BAA6B;AAC/C,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;AACtD,IAAI,aAAa;AACjB,SAAS,iBAAiB,CAAC,YAAY,EAAE;AACzC,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,GAAGA,kBAAgB,CAAC,YAAY,CAAC,GAAG,YAAY;;AAErF;AACA;AACA,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;AACvS;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,EAAE,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE;AAC5E,IAAI,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE;AACxC,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AACxC,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;AAC5C,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,SAAS,QAAQ,GAAG;AACpB,EAAE,IAAI,aAAa,IAAI,IAAI,EAAE;AAC7B,IAAI,aAAa,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;AACjH,EAAE;AACF,EAAE,OAAO,aAAa;AACtB;AACA,SAAS,qBAAqB,CAAC,IAAI,EAAE;AACrC,EAAE,OAAO,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1D;AACA,SAASA,kBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrD;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;AAC1B,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU;AACpC,MAAM,SAAS,EAAE,OAAO,CAAC;AACzB,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,OAAO,CAAC,OAAO;AAC/B,IAAI,SAAS,EAAE,OAAO,CAAC;AACvB,GAAG;AACH;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AACpC,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,MAAM;AACd;AACA,EAAE,IAAI,CAAC,YAAY;AACnB;AACA,EAAE,IAAI,CAAC,UAAU;AACjB;AACA,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;AACjC;AACA,EAAE,kBAAkB,CAAC,IAAI,CAAC;AAC1B,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM;AACpD;AACA,SAAS,0BAA0B,CAAC,IAAI,EAAE;AAC1C,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;AACxC,EAAE,IAAI,qBAAqB,CAAC,UAAU,CAAC,EAAE;AACzC,IAAI,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACnE,EAAE;AACF,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;AAClE,IAAI,OAAO,UAAU;AACrB,EAAE;AACF,EAAE,OAAO,0BAA0B,CAAC,UAAU,CAAC;AAC/C;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;AAC3D,EAAE,IAAI,oBAAoB;AAC1B,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;AACvB,IAAI,IAAI,GAAG,EAAE;AACb,EAAE;AACF,EAAE,IAAI,eAAe,KAAK,MAAM,EAAE;AAClC,IAAI,eAAe,GAAG,IAAI;AAC1B,EAAE;AACF,EAAE,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AAC7D,EAAE,MAAM,MAAM,GAAG,kBAAkB,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAClI,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC;AAC3C,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC;AAC7C,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,EAAE,EAAE,YAAY,IAAI,eAAe,GAAG,oBAAoB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACjM,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;AACzG,EAAE;AACF;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI;AAClF;;AC7JA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC;AACzC;AACA;AACA,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,EAAE,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AAC7D,EAAE,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM;AAChE,EAAE,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,YAAY;AACvF,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,KAAK,GAAG,WAAW;AACvB,IAAI,MAAM,GAAG,YAAY;AACzB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC,EAAE;AACP,GAAG;AACH;;AAEA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO;AAC/D;;AAEA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;AAClC,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC;AAC1B,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE;AACjD,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAClC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK;AACtD,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM;;AAEzD;;AAEA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACjC,IAAI,CAAC,GAAG,CAAC;AACT,EAAE;AACF,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACjC,IAAI,CAAC,GAAG,CAAC;AACT,EAAE;AACF,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA,MAAM,SAAS,gBAAgB,YAAY,CAAC,CAAC,CAAC;AAC9C,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;AAC1C,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,UAAU;AACpC,IAAI,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE;AACxE,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,KAAK;AACnB,EAAE;AACF,EAAE,IAAI,CAAC,oBAAoB,IAAI,OAAO,IAAI,oBAAoB,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE;AACvF,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;;AAEA,SAAS,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE;AACrF,EAAE,IAAI,YAAY,KAAK,MAAM,EAAE;AAC/B,IAAI,YAAY,GAAG,KAAK;AACxB,EAAE;AACF,EAAE,IAAI,eAAe,KAAK,MAAM,EAAE;AAClC,IAAI,eAAe,GAAG,KAAK;AAC3B,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACpD,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,EAAE,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;AACnC,QAAQ,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;AACtC,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC/B,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC1I,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACxC,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAC1C,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC;AACrC,IAAI,MAAM,SAAS,GAAG,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY;AACtG,IAAI,IAAI,UAAU,GAAG,GAAG;AACxB,IAAI,IAAI,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC;AACnD,IAAI,OAAO,aAAa,IAAI,YAAY,IAAI,SAAS,KAAK,UAAU,EAAE;AACtE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,qBAAqB,EAAE;AAC9D,MAAM,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,CAAC;AACnD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC;AAC7G,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,CAAC;AACzG,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC;AACxB,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC;AACxB,MAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAC5B,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC;AAC7B,MAAM,CAAC,IAAI,IAAI;AACf,MAAM,CAAC,IAAI,GAAG;AACd,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;AAC3C,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC;AACjD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,gBAAgB,CAAC;AAC1B,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG,CAAC;AACJ;;AAEA;AACA;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5C,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU;AACtD,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU;AAC/E,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,IAAI,GAAG,UAAU;AAC/B;;AAEA,SAAS,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE;AAChD,EAAE,MAAM,QAAQ,GAAG,eAAe,CAAC,qBAAqB,EAAE;AAC1D,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC;AAC9F,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS;AAC3C,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA,SAAS,qDAAqD,CAAC,IAAI,EAAE;AACrE,EAAE,IAAI;AACN,IAAI,QAAQ;AACZ,IAAI,IAAI;AACR,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO;AACtC,EAAE,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC;AAC1D,EAAE,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK;AACnE,EAAE,IAAI,YAAY,KAAK,eAAe,IAAI,QAAQ,IAAI,OAAO,EAAE;AAC/D,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7B,EAAE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AACjC,EAAE,MAAM,uBAAuB,GAAG,aAAa,CAAC,YAAY,CAAC;AAC7D,EAAE,IAAI,uBAAuB,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,EAAE;AACvE,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;AACpF,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,uBAAuB,EAAE;AACjC,MAAM,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC;AAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;AACpC,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU;AACxD,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS;AACvD,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACvI,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACjC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChF,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC;AAC9E,GAAG;AACH;;AAEA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC7C;;AAEA;AACA;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;AACvC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI;AACzC,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;AAC3F,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;AAChG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC3D,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;AAC7B,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,EAAE;AACpD,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK;AACxD,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA,MAAM,aAAa,GAAG,EAAE;AACxB,SAAS,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC5C,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc;AAC3C,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW;AAC9B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK;AAChC,IAAI,MAAM,GAAG,cAAc,CAAC,MAAM;AAClC,IAAI,MAAM,mBAAmB,GAAG,QAAQ,EAAE;AAC1C,IAAI,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC7E,MAAM,CAAC,GAAG,cAAc,CAAC,UAAU;AACnC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS;AAClC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA,EAAE,IAAI,gBAAgB,IAAI,CAAC,EAAE;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa;AAClC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI;AACzB,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAC7C,IAAI,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,KAAK,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9I,IAAI,MAAM,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;AACzG,IAAI,IAAI,4BAA4B,IAAI,aAAa,EAAE;AACvD,MAAM,KAAK,IAAI,4BAA4B;AAC3C,IAAI;AACJ,EAAE,CAAC,MAAM,IAAI,gBAAgB,IAAI,aAAa,EAAE;AAChD;AACA;AACA,IAAI,KAAK,IAAI,gBAAgB;AAC7B,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE;AACvD,EAAE,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;AAC/E,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS;AAChD,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU;AACnD,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC5E,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AAC/C,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AAC1B,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AACzB,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;AACA,SAAS,iCAAiC,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAChF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI,gBAAgB,KAAK,UAAU,EAAE;AACvC,IAAI,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7C,EAAE,CAAC,MAAM,IAAI,gBAAgB,KAAK,UAAU,EAAE;AAC9C,IAAI,IAAI,GAAG,eAAe,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACvD,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,EAAE;AAC1C,IAAI,IAAI,GAAG,0BAA0B,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AACjE,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACnD,IAAI,IAAI,GAAG;AACX,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7C,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7C,MAAM,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACnC,MAAM,MAAM,EAAE,gBAAgB,CAAC;AAC/B,KAAK;AACL,EAAE;AACF,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC/B;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,EAAE,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,EAAE;AAC9F,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC9G;;AAEA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,OAAO,EAAE,KAAK,EAAE;AACrD,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,OAAO,YAAY;AACvB,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AACjH,EAAE,IAAI,mCAAmC,GAAG,IAAI;AAChD,EAAE,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO;AACzE,EAAE,IAAI,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO;;AAErE;AACA,EAAE,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE;AACxE,IAAI,MAAM,aAAa,GAAG,kBAAkB,CAAC,WAAW,CAAC;AACzD,IAAI,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,WAAW,CAAC;AAClE,IAAI,IAAI,CAAC,uBAAuB,IAAI,aAAa,CAAC,QAAQ,KAAK,OAAO,EAAE;AACxE,MAAM,mCAAmC,GAAG,IAAI;AAChD,IAAI;AACJ,IAAI,MAAM,qBAAqB,GAAG,cAAc,GAAG,CAAC,uBAAuB,IAAI,CAAC,mCAAmC,GAAG,CAAC,uBAAuB,IAAI,aAAa,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,mCAAmC,KAAK,mCAAmC,CAAC,QAAQ,KAAK,UAAU,IAAI,mCAAmC,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,IAAI,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC;AAC3c,IAAI,IAAI,qBAAqB,EAAE;AAC/B;AACA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,WAAW,CAAC;AAClE,IAAI,CAAC,MAAM;AACX;AACA,MAAM,mCAAmC,GAAG,aAAa;AACzD,IAAI;AACJ,IAAI,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;AAC5C,EAAE;AACF,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;AAC5B,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA,SAAS,eAAe,CAAC,IAAI,EAAE;AAC/B,EAAE,IAAI;AACN,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,MAAM,wBAAwB,GAAG,QAAQ,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpK,EAAE,MAAM,iBAAiB,GAAG,CAAC,GAAG,wBAAwB,EAAE,YAAY,CAAC;AACvE,EAAE,MAAM,SAAS,GAAG,iCAAiC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC9F,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG;AACzB,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK;AAC7B,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM;AAC/B,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,IAAI,MAAM,IAAI,GAAG,iCAAiC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3F,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACrC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,KAAK,GAAG,IAAI;AACvB,IAAI,MAAM,EAAE,MAAM,GAAG,GAAG;AACxB,IAAI,CAAC,EAAE,IAAI;AACX,IAAI,CAAC,EAAE;AACP,GAAG;AACH;;AAEA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI;AACJ,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC/B,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI;AACJ,GAAG;AACH;;AAEA,SAAS,6BAA6B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE;AACxE,EAAE,MAAM,uBAAuB,GAAG,aAAa,CAAC,YAAY,CAAC;AAC7D,EAAE,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC;AAC1D,EAAE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO;AACtC,EAAE,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AAC1E,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;;AAEjC;AACA;AACA,EAAE,SAAS,yBAAyB,GAAG;AACvC,IAAI,OAAO,CAAC,CAAC,GAAG,mBAAmB,CAAC,eAAe,CAAC;AACpD,EAAE;AACF,EAAE,IAAI,uBAAuB,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,EAAE;AACvE,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;AACpF,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,uBAAuB,EAAE;AACjC,MAAM,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AACzF,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU;AACxD,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS;AACvD,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE;AAChC,MAAM,yBAAyB,EAAE;AACjC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,CAAC,uBAAuB,IAAI,eAAe,EAAE;AAC9D,IAAI,yBAAyB,EAAE;AAC/B,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACvI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AACpE,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAClE,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK;AACrB,IAAI,MAAM,EAAE,IAAI,CAAC;AACjB,GAAG;AACH;;AAEA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;AAC1D;;AAEA,SAAS,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAChD,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE;AACnF,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC5B,EAAE;AACF,EAAE,IAAI,eAAe,GAAG,OAAO,CAAC,YAAY;;AAE5C;AACA;AACA;AACA;AACA,EAAE,IAAI,kBAAkB,CAAC,OAAO,CAAC,KAAK,eAAe,EAAE;AACvD,IAAI,eAAe,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI;AACxD,EAAE;AACF,EAAE,OAAO,eAAe;AACxB;;AAEA;AACA;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC5C,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AAC3B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AAC/B,IAAI,IAAI,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;AAChD,IAAI,OAAO,eAAe,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,EAAE;AACvE,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE;AAC9E,QAAQ,OAAO,eAAe;AAC9B,MAAM;AACN,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;AACtD,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,IAAI,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC3D,EAAE,OAAO,YAAY,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE;AAC3F,IAAI,YAAY,GAAG,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC9D,EAAE;AACF,EAAE,IAAI,YAAY,IAAI,qBAAqB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;AACnI,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,OAAO,YAAY,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,GAAG;AAC3D;;AAEA,MAAM,eAAe,GAAG,gBAAgB,IAAI,EAAE;AAC9C,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,IAAI,eAAe;AACnE,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa;AAC5C,EAAE,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjE,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,6BAA6B,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;AACnH,IAAI,QAAQ,EAAE;AACd,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,KAAK,EAAE,kBAAkB,CAAC,KAAK;AACrC,MAAM,MAAM,EAAE,kBAAkB,CAAC;AACjC;AACA,GAAG;AACH,CAAC;;AAED,SAAS,KAAK,CAAC,OAAO,EAAE;AACxB,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,KAAK;AACxD;;AAEA,MAAM,QAAQ,GAAG;AACjB,EAAE,qDAAqD;AACvD,EAAE,kBAAkB;AACpB,EAAE,eAAe;AACjB,EAAE,eAAe;AACjB,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE;AACF,CAAC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AACnF;;AAEA;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AACtC,EAAE,IAAI,EAAE,GAAG,IAAI;AACf,EAAE,IAAI,SAAS;AACf,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC1C,EAAE,SAAS,OAAO,GAAG;AACrB,IAAI,IAAI,GAAG;AACX,IAAI,YAAY,CAAC,SAAS,CAAC;AAC3B,IAAI,CAAC,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE;AAC1C,IAAI,EAAE,GAAG,IAAI;AACb,EAAE;AACF,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;AACpC,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,MAAM,IAAI,GAAG,KAAK;AAClB,IAAI;AACJ,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE;AAC9B,MAAM,SAAS,GAAG,CAAC;AACnB,IAAI;AACJ,IAAI,OAAO,EAAE;AACb,IAAI,MAAM,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACpE,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM;AACN,KAAK,GAAG,wBAAwB;AAChC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,MAAM,EAAE;AACd,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC3B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;AAC/B,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AAC/D,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC;AACjE,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AACjC,IAAI,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,SAAS,GAAG,IAAI;AACzG,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,UAAU;AAChB,MAAM,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI;AAC9C,KAAK;AACL,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,SAAS,aAAa,CAAC,OAAO,EAAE;AACpC,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;AAChD,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,UAAU,OAAO,OAAO,EAAE;AAC1B,QAAQ;AACR,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA;AACA,UAAU,SAAS,GAAG,UAAU,CAAC,MAAM;AACvC,YAAY,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AAChC,UAAU,CAAC,EAAE,IAAI,CAAC;AAClB,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/B,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,aAAa,GAAG,KAAK;AAC3B,IAAI;;AAEJ;AACA;AACA,IAAI,IAAI;AACR,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,aAAa,EAAE;AACnD,QAAQ,GAAG,OAAO;AAClB;AACA,QAAQ,IAAI,EAAE,IAAI,CAAC;AACnB,OAAO,CAAC;AACR,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC;AAC3D,IAAI;AACJ,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,EAAE;AACF,EAAE,OAAO,CAAC,IAAI,CAAC;AACf,EAAE,OAAO,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,MAAM;AACR,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,aAAa,GAAG,OAAO,cAAc,KAAK,UAAU;AACxD,IAAI,WAAW,GAAG,OAAO,oBAAoB,KAAK,UAAU;AAC5D,IAAI,cAAc,GAAG;AACrB,GAAG,GAAG,OAAO;AACb,EAAE,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;AAC9C,EAAE,MAAM,SAAS,GAAG,cAAc,IAAI,cAAc,GAAG,CAAC,IAAI,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;AAC5K,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI;AAChC,IAAI,cAAc,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClE,MAAM,OAAO,EAAE;AACf,KAAK,CAAC;AACN,IAAI,cAAc,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjE,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,IAAI;AACxF,EAAE,IAAI,cAAc,GAAG,EAAE;AACzB,EAAE,IAAI,cAAc,GAAG,IAAI;AAC3B,EAAE,IAAI,aAAa,EAAE;AACrB,IAAI,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,IAAI;AAChD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC7B,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,cAAc,IAAI,QAAQ,EAAE;AACzF;AACA;AACA,QAAQ,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1C,QAAQ,oBAAoB,CAAC,cAAc,CAAC;AAC5C,QAAQ,cAAc,GAAG,qBAAqB,CAAC,MAAM;AACrD,UAAU,IAAI,eAAe;AAC7B,UAAU,CAAC,eAAe,GAAG,cAAc,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;AACzF,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,MAAM,MAAM,EAAE;AACd,IAAI,CAAC,CAAC;AACN,IAAI,IAAI,WAAW,IAAI,CAAC,cAAc,EAAE;AACxC,MAAM,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;AACzC,IAAI;AACJ,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,WAAW,GAAG,cAAc,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI;AAC5E,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,SAAS,EAAE;AACf,EAAE;AACF,EAAE,SAAS,SAAS,GAAG;AACvB,IAAI,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC;AACxD,IAAI,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;AACjE,MAAM,MAAM,EAAE;AACd,IAAI;AACJ,IAAI,WAAW,GAAG,WAAW;AAC7B,IAAI,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC;AAC9C,EAAE;AACF,EAAE,MAAM,EAAE;AACV,EAAE,OAAO,MAAM;AACf,IAAI,IAAI,gBAAgB;AACxB,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI;AAClC,MAAM,cAAc,IAAI,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtE,MAAM,cAAc,IAAI,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtE,IAAI,CAAC,CAAC;AACN,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,EAAE;AACpC,IAAI,CAAC,gBAAgB,GAAG,cAAc,KAAK,IAAI,IAAI,gBAAgB,CAAC,UAAU,EAAE;AAChF,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,oBAAoB,CAAC,OAAO,CAAC;AACnC,IAAI;AACJ,EAAE,CAAC;AACH;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,QAAQ;;AAUvB;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,GAAG,OAAO;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,MAAM;;AAiBnB;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,GAAG,OAAO;;AAcrB;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK;AAC1D;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,MAAM,aAAa,GAAG;AACxB,IAAI,QAAQ;AACZ,IAAI,GAAG;AACP,GAAG;AACH,EAAE,MAAM,iBAAiB,GAAG;AAC5B,IAAI,GAAG,aAAa,CAAC,QAAQ;AAC7B,IAAI,EAAE,EAAE;AACR,GAAG;AACH,EAAE,OAAO,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;AAChD,IAAI,GAAG,aAAa;AACpB,IAAI,QAAQ,EAAE;AACd,GAAG,CAAC;AACJ,CAAC;;AC1wBD;AACA;AACA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACO,MAAM+W,WAAW,GAAG;AACzBC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,EAAE,EAAE,IAAI;AACR,EAAA,KAAK,EAAE;AACT,CAAC;;AAeD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,wBAAwB,GAAGA,CAACC,eAAe,EAAEC,gBAAgB,GAAG,QAAQ,KAAK;AACxF;EACA,IAAI,CAACD,eAAe,IAAI,CAACA,eAAe,CAACxb,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtD,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,MAAM0b,KAAK,GAAGF,eAAe,CAACjX,KAAK,CAAC,KAAK,CAAC;AAC1C,EAAA,MAAMoX,UAAU,GAAG;AAAEC,IAAAA,EAAE,EAAEH;AAAiB,GAAC,CAAA;;AAE3C,EAAA,KAAK,MAAMI,IAAI,IAAIH,KAAK,EAAE;AACxB,IAAA,IAAIG,IAAI,CAAC7b,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB;MACA,MAAM,CAAC8b,UAAU,EAAEC,SAAS,CAAC,GAAGF,IAAI,CAACtX,KAAK,CAAC,GAAG,CAAC;AAC/C,MAAA,IAAI2W,WAAW,CAACY,UAAU,CAAC,KAAKvY,SAAS,EAAE;AACzCoY,QAAAA,UAAU,CAACG,UAAU,CAAC,GAAGC,SAAS;AACpC,MAAA;AACF,IAAA,CAAC,MAAM;AACL;MACAJ,UAAU,CAACC,EAAE,GAAGC,IAAI;AACtB,IAAA;AACF,EAAA;AAEA,EAAA,OAAOF,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,sBAAsB,GAAGA,CAACC,oBAAoB,EAAER,gBAAgB,GAAG,QAAQ,KAAK;EAC3F,IAAI,CAACQ,oBAAoB,EAAE;AACzB,IAAA,OAAOR,gBAAgB;AACzB,EAAA;;AAEA;AACA,EAAA,MAAMS,aAAa,GAAGlZ,MAAM,CAACmZ,UAAU;;AAEvC;AACA,EAAA,IAAIC,eAAe,GAAGH,oBAAoB,CAACL,EAAE,IAAIH,gBAAgB;;AAEjE;AACA,EAAA,MAAMY,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;AAEvD,EAAA,KAAK,MAAMP,UAAU,IAAIO,eAAe,EAAE;AACxC,IAAA,MAAMC,QAAQ,GAAGpB,WAAW,CAACY,UAAU,CAAC;IACxC,IAAII,aAAa,IAAII,QAAQ,IAAIL,oBAAoB,CAACH,UAAU,CAAC,EAAE;AACjEM,MAAAA,eAAe,GAAGH,oBAAoB,CAACH,UAAU,CAAC;AACpD,IAAA;AACF,EAAA;AAEA,EAAA,OAAOM,eAAe;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAG9V,QAAQ,IAAI;EACnD,MAAM+V,SAAS,GAAG,EAAE;EAEpB,KAAK,MAAMV,UAAU,IAAIvd,MAAM,CAAC1C,IAAI,CAACqf,WAAW,CAAC,EAAE;AACjD,IAAA,MAAMoB,QAAQ,GAAGpB,WAAW,CAACY,UAAU,CAAC;IACxC,MAAMW,GAAG,GAAGzZ,MAAM,CAACmV,UAAU,CAAC,CAAA,YAAA,EAAemE,QAAQ,CAAA,GAAA,CAAK,CAAC;AAE3DG,IAAAA,GAAG,CAACld,gBAAgB,CAAC,QAAQ,EAAEkH,QAAQ,CAAC;IACxC+V,SAAS,CAAC3R,IAAI,CAAC;MAAE4R,GAAG;AAAEtf,MAAAA,OAAO,EAAEsJ;AAAS,KAAC,CAAC;AAC5C,EAAA;AAEA,EAAA,OAAO+V,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAME,0BAA0B,GAAGF,SAAS,IAAI;AACrD,EAAA,KAAK,MAAM;IAAEC,GAAG;AAAEtf,IAAAA;GAAS,IAAIqf,SAAS,EAAE;AACxCC,IAAAA,GAAG,CAAChd,mBAAmB,CAAC,QAAQ,EAAEtC,OAAO,CAAC;AAC5C,EAAA;AACF,CAAC;;AC/HD;AACA;AACA;AACA;AACA;AACA;;;AA8BA;AACA;AACA;;AAEA,MAAM0K,MAAI,GAAG,MAAM;AACnB,MAAMuB,UAAQ,GAAG,SAAS;AAC1B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAM4P,YAAU,GAAG,QAAQ;AAC3B,MAAMC,SAAO,GAAG,KAAK;AACrB,MAAMC,cAAY,GAAG,SAAS;AAC9B,MAAMC,gBAAc,GAAG,WAAW;AAClC,MAAMxP,gBAAc,GAAG,WAAW;AAClC,MAAMC,iBAAe,GAAG,YAAY;AACpC,MAAMwP,UAAQ,GAAG,MAAM;AACvB,MAAMC,SAAO,GAAG,KAAK;AACrB,MAAMC,WAAS,GAAG,OAAO;AACzB,MAAMC,WAAS,GAAG,GAAG;AACrB,MAAMC,kBAAkB,GAAG,CAAC;AAE5B,MAAMC,mBAAmB,GAAG,GAAG;AAE/B,MAAM1E,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAC/D,MAAMsQ,sBAAsB,GAAG,CAAA,OAAA,EAAU/T,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AACnE,MAAMuQ,oBAAoB,GAAG,CAAA,KAAA,EAAQhU,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMN,iBAAe,GAAG,MAAM;AAE9B,MAAMQ,sBAAoB,GAAG,uDAAuD;AAEpF,MAAMsQ,eAAa,GAAG,OAAO;AAC7B,MAAMC,gBAAgB,GAAG,UAAU;AACnC,MAAMC,uBAAuB,GAAG,uBAAuB;AACvD,MAAMC,mBAAmB,GAAG,aAAa;AACzC,MAAMC,wBAAsB,GAAG,0CAA0C;AAEzE,MAAMC,iBAAiB,GAAG,cAAc;AACxC,MAAMC,iBAAiB,GAAG,WAAW;AAErC,MAAMC,uBAAuB,GAAG/B,SAAS,IAAI;EAC3C,IAAI5V,OAAK,EAAE,EAAE;AACX,IAAA,OAAO4V,SAAS,CAACzc,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,EAAA;AAEA,EAAA,OAAOyc,SAAS,CAACzc,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AACnF,CAAC;AAED,MAAMye,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,MAAMzW,SAAO,GAAG;AACd0W,EAAAA,SAAS,EAAE,IAAI;AACfC,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,OAAO,EAAE,SAAS;AAClBxD,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACdyD,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,IAAI,EAAE,IAAI;AACV3C,EAAAA,SAAS,EAAE6B,iBAAiB;AAC5Be,EAAAA,SAAS,EAAE,QAAQ;AACnBC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,cAAc,EAAE,MAAM;AACtBC,EAAAA,YAAY,EAAE1B;AAChB,CAAC;AAED,MAAMxV,aAAW,GAAG;AAClByW,EAAAA,SAAS,EAAE,kBAAkB;AAC7BC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,SAAS,EAAE,0BAA0B;AACrCC,EAAAA,OAAO,EAAE,QAAQ;AACjBxD,EAAAA,MAAM,EAAE,yBAAyB;AACjCyD,EAAAA,cAAc,EAAE,wBAAwB;AACxCC,EAAAA,IAAI,EAAE,gBAAgB;AACtB3C,EAAAA,SAAS,EAAE,QAAQ;AACnB4C,EAAAA,SAAS,EAAE,yBAAyB;AACpCC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,cAAc,EAAE,QAAQ;AACxBC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,IAAI,SAAShW,aAAa,CAAC;AAC/B,EAAA,OAAOiW,cAAc,GAAG,IAAIniB,GAAG,EAAE;AAEjCwL,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,IAAI,OAAO6S,eAAe,KAAK,WAAW,EAAE;AAC1C,MAAA,MAAM,IAAIjS,SAAS,CAAC,kEAAkE,CAAC;AACzF,IAAA;AAEA,IAAA,KAAK,CAACxN,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACiX,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACC,OAAO,GAAG,IAAI,CAACpW,QAAQ,CAAC/K,UAAU,CAAA;AACvC,IAAA,IAAI,CAACohB,aAAa,GAAG,IAAInkB,GAAG,EAAE;AAC9B,IAAA,IAAI,CAACokB,qBAAqB,GAAG,IAAIpkB,GAAG,EAAE;IACtC,IAAI,CAACqkB,gBAAgB,GAAG,IAAI;AAE5B,IAAA,IAAI,CAACC,KAAK,GAAG,IAAI,CAACvW,OAAO,CAACyV,IAAI,IAAI,IAAI,CAACe,SAAS,EAAE;;AAElD;AACA;AACA;AACA;IACA,IAAI,CAAC,IAAI,CAACxW,OAAO,CAACyV,IAAI,IAAI,IAAI,CAACc,KAAK,EAAE;MACpC,IAAI,CAACJ,OAAO,GAAG,IAAI,CAACM,YAAY,CAAC,IAAI,CAACF,KAAK,CAAC;AAC9C,IAAA;AAEA,IAAA,IAAI,CAACG,UAAU,GAAG,IAAI,CAACP,OAAO,CAAC7Z,SAAS,EAAErG,QAAQ,CAAC,SAAS,CAAC;AAE7D,IAAA,IAAI,CAAC0gB,mBAAmB,GAAG,IAAI,CAACJ,KAAK,EAAEvhB,UAAU;IAEjD,IAAI,CAAC4hB,0BAA0B,EAAE;IACjC,IAAI,CAACC,sBAAsB,EAAE;AAC/B,EAAA;;AAEA;EACA,WAAWnY,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAAC0M,QAAQ,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AACpD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI5U,UAAU,CAAC,IAAI,CAAC4D,QAAQ,CAAC,IAAI,IAAI,CAAC8Q,QAAQ,EAAE,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM7a,aAAa,GAAG;MACpBA,aAAa,EAAE,IAAI,CAAC+J;KACrB;AAED,IAAA,MAAM+W,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,YAAU,EAAEvZ,aAAa,CAAC;IAEhF,IAAI8gB,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACmT,oBAAoB,EAAE;IAC3B,IAAI,CAACC,eAAe,EAAE;AAEtB,IAAA,IAAI,cAAc,IAAInc,QAAQ,CAAC6B,eAAe,IAAI,CAAC,IAAI,CAACyZ,OAAO,CAACla,OAAO,CAACwY,mBAAmB,CAAC,EAAE;MAC5F,KAAK,MAAMtiB,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACyC,EAAE,CAAC7E,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACgD,QAAQ,CAACqO,KAAK,CAAC;AAAE8I,MAAAA,YAAY,EAAE;AAAM,KAAC,CAAC;IAC5C,IAAI,CAACnX,QAAQ,CAAChH,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAEnD,IAAI,CAACwd,KAAK,CAACja,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;IACzC,IAAI,CAACzD,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;IAE5C,IAAI,IAAI,CAAC2S,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAAC7Z,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;AAC7C,IAAA;AAEAsS,IAAAA,IAAI,CAACC,cAAc,CAACxN,GAAG,CAAC,IAAI,CAAC;IAC7BhU,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,aAAW,EAAExZ,aAAa,CAAC;AACjE,EAAA;AAEA8a,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI3U,UAAU,CAAC,IAAI,CAAC4D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC8Q,QAAQ,EAAE,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM7a,aAAa,GAAG;MACpBA,aAAa,EAAE,IAAI,CAAC+J;KACrB;AAED,IAAA,IAAI,CAACoX,aAAa,CAACnhB,aAAa,CAAC;AACnC,EAAA;AAEAoK,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACgX,gBAAgB,EAAE;IACvB,IAAI,CAACC,4BAA4B,EAAE;IACnC,IAAI,CAACC,2BAA2B,EAAE;IAClC,IAAI,CAACC,iBAAiB,EAAE;IACxB,IAAI,CAACC,wBAAwB,EAAE;AAC/B1B,IAAAA,IAAI,CAACC,cAAc,CAAC7iB,MAAM,CAAC,IAAI,CAAC;IAChC,KAAK,CAACkN,OAAO,EAAE;AACjB,EAAA;AAEAqX,EAAAA,MAAMA,GAAG;IACP,IAAI,IAAI,CAACzB,gBAAgB,EAAE;MACzB,IAAI,CAAC0B,uBAAuB,EAAE;AAChC,IAAA;AACF,EAAA;;AAEA;AACAlB,EAAAA,SAASA,GAAG;AACV;AACA;AACA,IAAA,MAAMmB,OAAO,GAAGvW,cAAc,CAACnF,OAAO,CAAC,IAAI,CAAC8D,QAAQ,EAAE,CAAA,KAAA,EAAQuU,eAAa,GAAG,CAAC;AAC/E,IAAA,OAAOlT,cAAc,CAACrO,IAAI,CAAC,IAAI,CAACgN,QAAQ,EAAEuU,eAAa,CAAC,CAAC,CAAC,CAAC,IACzDlT,cAAc,CAACS,IAAI,CAAC,IAAI,CAAC9B,QAAQ,EAAEuU,eAAa,CAAC,CAAC,CAAC,CAAC,IACpDlT,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEqD,OAAO,IAAI,IAAI,CAACxB,OAAO,CAAC;AAClE,EAAA;EAEAM,YAAYA,CAAChB,IAAI,EAAE;AACjB,IAAA,IAAIkC,OAAO,GAAG,IAAI,CAAC5X,QAAQ,CAAC/K,UAAU;IACtC,OAAO2iB,OAAO,YAAYtW,OAAO,IAAI,CAACsW,OAAO,CAAC1hB,QAAQ,CAACwf,IAAI,CAAC,EAAE;MAC5DkC,OAAO,GAAGA,OAAO,CAAC3iB,UAAU;AAC9B,IAAA;IAEA,OAAO2iB,OAAO,YAAYtW,OAAO,GAAGsW,OAAO,GAAG,IAAI,CAAC5X,QAAQ,CAAC/K,UAAU;AACxE,EAAA;EAEAmiB,aAAaA,CAACnhB,aAAa,EAAE;AAC3B,IAAA,MAAM4hB,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,YAAU,EAAEzZ,aAAa,CAAC;IAChF,IAAI4hB,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAAC2T,iBAAiB,EAAE;AAExB,IAAA,IAAI,cAAc,IAAI1c,QAAQ,CAAC6B,eAAe,EAAE;MAC9C,KAAK,MAAMvK,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC9C,MAAA;AACF,IAAA;IAEA,IAAI,CAACqa,gBAAgB,EAAE;IACvB,IAAI,CAACC,4BAA4B,EAAE;IAEnC,IAAI,CAACd,KAAK,CAACja,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;IAC5C,IAAI,CAACzD,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;IAE/C,IAAI,IAAI,CAAC2S,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAAC7Z,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;AAChD,IAAA;IAEA,IAAI,CAACzD,QAAQ,CAAChH,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IACpDF,WAAW,CAACG,mBAAmB,CAAC,IAAI,CAACud,KAAK,EAAE,WAAW,CAAC;IACxD1d,WAAW,CAACG,mBAAmB,CAAC,IAAI,CAACud,KAAK,EAAE,SAAS,CAAC;AACtDT,IAAAA,IAAI,CAACC,cAAc,CAAC7iB,MAAM,CAAC,IAAI,CAAC;IAChCqB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,cAAY,EAAE1Z,aAAa,CAAC;AAClE,EAAA;EAEA8I,UAAUA,CAACC,MAAM,EAAE;AACjBA,IAAAA,MAAM,GAAG,KAAK,CAACD,UAAU,CAACC,MAAM,CAAC;IAEjC,IAAI,OAAOA,MAAM,CAAC2W,SAAS,KAAK,QAAQ,IAAI,CAACla,WAAS,CAACuD,MAAM,CAAC2W,SAAS,CAAC,IACtE,OAAO3W,MAAM,CAAC2W,SAAS,CAACnJ,qBAAqB,KAAK,UAAU,EAC5D;MACA,MAAM,IAAI5M,SAAS,CAAC,CAAA,EAAGf,MAAI,CAACgB,WAAW,EAAE,CAAA,8FAAA,CAAgG,CAAC;AAC5I,IAAA;AAEA,IAAA,OAAOb,MAAM;AACf,EAAA;AAEAiY,EAAAA,eAAeA,GAAG;AAChB,IAAA,IAAI,IAAI,CAAChX,OAAO,CAACuV,OAAO,KAAK,QAAQ,EAAE;MACrC1c,WAAW,CAACC,gBAAgB,CAAC,IAAI,CAACyd,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,IAAIsB,gBAAgB,GAAG,IAAI,CAAC9X,QAAQ;AAEpC,IAAA,IAAI,IAAI,CAACC,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;MACvCmC,gBAAgB,GAAG,IAAI,CAAC1B,OAAO;IACjC,CAAC,MAAM,IAAI3a,WAAS,CAAC,IAAI,CAACwE,OAAO,CAAC0V,SAAS,CAAC,EAAE;MAC5CmC,gBAAgB,GAAGnc,UAAU,CAAC,IAAI,CAACsE,OAAO,CAAC0V,SAAS,CAAC;IACvD,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC1V,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;AACrDmC,MAAAA,gBAAgB,GAAG,IAAI,CAAC7X,OAAO,CAAC0V,SAAS;AAC3C,IAAA;AAEA,IAAA,IAAI,CAACgC,uBAAuB,CAACG,gBAAgB,CAAC;AAE9C,IAAA,IAAI,CAAC7B,gBAAgB,GAAG8B,UAAU,CAChCD,gBAAgB,EAChB,IAAI,CAACtB,KAAK,EACV,MAAM,IAAI,CAACmB,uBAAuB,CAACG,gBAAgB,CACrD,CAAC;AACH,EAAA;AAEA,EAAA,MAAMH,uBAAuBA,CAACG,gBAAgB,GAAG,IAAI,EAAE;AACrD,IAAA,IAAI,CAAC,IAAI,CAACtB,KAAK,EAAE;AACf,MAAA;AACF,IAAA;IAEA,IAAI,CAACsB,gBAAgB,EAAE;AACrB,MAAA,IAAI,IAAI,CAAC7X,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;QACvCmC,gBAAgB,GAAG,IAAI,CAAC1B,OAAO;MACjC,CAAC,MAAM,IAAI3a,WAAS,CAAC,IAAI,CAACwE,OAAO,CAAC0V,SAAS,CAAC,EAAE;QAC5CmC,gBAAgB,GAAGnc,UAAU,CAAC,IAAI,CAACsE,OAAO,CAAC0V,SAAS,CAAC;MACvD,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC1V,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;AACrDmC,QAAAA,gBAAgB,GAAG,IAAI,CAAC7X,OAAO,CAAC0V,SAAS;AAC3C,MAAA,CAAC,MAAM;QACLmC,gBAAgB,GAAG,IAAI,CAAC9X,QAAQ;AAClC,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+S,SAAS,GAAG,IAAI,CAACiF,aAAa,EAAE;AACtC,IAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,sBAAsB,EAAE;IAChD,MAAMzC,cAAc,GAAG,IAAI,CAAC0C,kBAAkB,CAACpF,SAAS,EAAEkF,UAAU,CAAC;IAErE,MAAM,IAAI,CAACG,sBAAsB,CAC/BN,gBAAgB,EAChB,IAAI,CAACtB,KAAK,EACVf,cAAc,CAAC1C,SAAS,EACxB0C,cAAc,CAACwC,UAAU,EACzBxC,cAAc,CAACG,QACjB,CAAC;AACH,EAAA;AAEA9E,EAAAA,QAAQA,GAAG;IACT,OAAO,IAAI,CAAC0F,KAAK,CAACja,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACvD,EAAA;AAEAuU,EAAAA,aAAaA,GAAG;AACd,IAAA,MAAMjF,SAAS,GAAG,IAAI,CAACoD,qBAAqB,GAC1CnD,sBAAsB,CAAC,IAAI,CAACmD,qBAAqB,EAAEvB,iBAAiB,CAAC,GACrE,IAAI,CAAC3U,OAAO,CAAC8S,SAAS;IAExB,OAAO+B,uBAAuB,CAAC/B,SAAS,CAAC;AAC3C,EAAA;AAEA8D,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,IAAI,CAACV,qBAAqB,GAAG5D,wBAAwB,CAAC,IAAI,CAACtS,OAAO,CAAC8S,SAAS,EAAE6B,iBAAiB,CAAC;IAEhG,IAAI,IAAI,CAACuB,qBAAqB,EAAE;MAC9B,IAAI,CAACkC,yBAAyB,EAAE;AAClC,IAAA;AACF,EAAA;AAEAA,EAAAA,yBAAyBA,GAAG;IAC1B,IAAI,CAACd,2BAA2B,EAAE;AAClC,IAAA,IAAI,CAACrB,oBAAoB,GAAG3C,yBAAyB,CAAC,MAAM;AAC1D,MAAA,IAAI,IAAI,CAACzC,QAAQ,EAAE,EAAE;QACnB,IAAI,CAAC6G,uBAAuB,EAAE;AAChC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAJ,EAAAA,2BAA2BA,GAAG;AAC5B7D,IAAAA,0BAA0B,CAAC,IAAI,CAACwC,oBAAoB,CAAC;IACrD,IAAI,CAACA,oBAAoB,GAAG,EAAE;AAChC,EAAA;AAEAoC,EAAAA,UAAUA,GAAG;IACX,MAAM;AAAEtG,MAAAA,MAAM,EAAEuG;KAAc,GAAG,IAAI,CAACtY,OAAO;AAE7C,IAAA,IAAI,OAAOsY,YAAY,KAAK,QAAQ,EAAE;AACpC,MAAA,OAAOA,YAAY,CAAChd,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACjO,KAAK,IAAIqF,MAAM,CAACsQ,QAAQ,CAAC3V,KAAK,EAAE,EAAE,CAAC,CAAC;AACzE,IAAA;AAEA,IAAA,IAAI,OAAOslB,YAAY,KAAK,UAAU,EAAE;AACtC,MAAA,OAAO,CAAC;QAAExF,SAAS;AAAEyF,QAAAA;AAAM,OAAC,KAAK;QAC/B,MAAMC,MAAM,GAAGF,YAAY,CAAC;UAAExF,SAAS;UAAE4C,SAAS,EAAE6C,KAAK,CAAC7C,SAAS;UAAE+C,QAAQ,EAAEF,KAAK,CAACE;AAAS,SAAC,EAAE,IAAI,CAAC1Y,QAAQ,CAAC;AAC/G,QAAA,OAAOyY,MAAM;MACf,CAAC;AACH,IAAA;AAEA,IAAA,OAAOF,YAAY;AACrB,EAAA;AAEAL,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMS,WAAW,GAAG,IAAI,CAACL,UAAU,EAAE;IAErC,MAAML,UAAU,GAAG,CACjBjG,MAAM,CACJ,OAAO2G,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;KAClE,CAAC,EACD5G,IAAI,CAAC;AACH+G,MAAAA,kBAAkB,EAAE,IAAI,CAACC,sBAAsB;KAChD,CAAC,EACF9G,KAAK,CAAC;AACJqD,MAAAA,QAAQ,EAAE,IAAI,CAACrV,OAAO,CAACqV,QAAQ,KAAK,iBAAiB,GAAG,mBAAmB,GAAG,IAAI,CAACrV,OAAO,CAACqV;AAC7F,KAAC,CAAC,CACH;AAED,IAAA,OAAO2C,UAAU;AACnB,EAAA;AAEAc,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMhG,SAAS,GAAG,IAAI,CAACiF,aAAa,EAAE;AAEtC,IAAA,MAAMgB,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;MACtDvL,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;MACtDb,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/EnB,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,OAAOsN,WAAW,CAACjG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACrE,EAAA;AAEAoF,EAAAA,kBAAkBA,CAACpF,SAAS,EAAEkF,UAAU,EAAE;AACxC,IAAA,MAAMiB,aAAa,GAAG;MACpBnG,SAAS;MACTkF,UAAU;AACVrC,MAAAA,QAAQ,EAAE,IAAI,CAAC3V,OAAO,CAAC2V;KACxB;IAED,OAAO;AACL,MAAA,GAAGsD,aAAa;AAChB,MAAA,GAAG7b,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAACwV,cAAc,EAAE,CAAClb,SAAS,EAAE2e,aAAa,CAAC;KACnE;AACH,EAAA;AAEA7B,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAACpB,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,EAAE;MACvB,IAAI,CAACA,gBAAgB,GAAG,IAAI;AAC9B,IAAA;AACF,EAAA;AAEAkD,EAAAA,aAAaA,GAAG;IACd,MAAM;AAAE5D,MAAAA;KAAW,GAAG,IAAI,CAACtV,OAAO;IAClC,IAAIsV,SAAS,KAAK,KAAK,EAAE;AACvB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,OAAOA,SAAS,KAAK,IAAI,GAAGza,QAAQ,CAACoc,IAAI,GAAGvb,UAAU,CAAC4Z,SAAS,CAAC;AACnE,EAAA;AAEAyB,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAMzB,SAAS,GAAG,IAAI,CAAC4D,aAAa,EAAE;AACtC,IAAA,IAAI,CAAC5D,SAAS,IAAI,CAAC,IAAI,CAACiB,KAAK,EAAE;AAC7B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACA,KAAK,CAACvhB,UAAU,KAAKsgB,SAAS,EAAE;AACvCA,MAAAA,SAAS,CAACjI,MAAM,CAAC,IAAI,CAACkJ,KAAK,CAAC;AAC9B,IAAA;AACF,EAAA;AAEAc,EAAAA,4BAA4BA,GAAG;IAC7B,IAAI,CAAC,IAAI,CAACV,mBAAmB,IAAI,CAAC,IAAI,CAACJ,KAAK,EAAE;AAC5C,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACA,KAAK,CAACvhB,UAAU,KAAK,IAAI,CAAC2hB,mBAAmB,EAAE;MACtD,IAAI,CAACA,mBAAmB,CAACtJ,MAAM,CAAC,IAAI,CAACkJ,KAAK,CAAC;AAC7C,IAAA;AACF,EAAA;AAEA,EAAA,MAAM4B,sBAAsBA,CAACzC,SAAS,EAAE+C,QAAQ,EAAE3F,SAAS,EAAEkF,UAAU,EAAErC,QAAQ,GAAG,UAAU,EAAE;AAC9F,IAAA,IAAI,CAAC8C,QAAQ,CAACU,WAAW,EAAE;AACzB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAM;MAAEjE,CAAC;MAAEC,CAAC;AAAErC,MAAAA,SAAS,EAAEsG;AAAe,KAAC,GAAG,MAAMxH,eAAe,CAC/D8D,SAAS,EACT+C,QAAQ,EACR;MAAE3F,SAAS;MAAEkF,UAAU;AAAErC,MAAAA;AAAS,KACpC,CAAC;AAED,IAAA,IAAI,CAAC8C,QAAQ,CAACU,WAAW,EAAE;AACzB,MAAA,OAAO,IAAI;AACb,IAAA;AAEA7jB,IAAAA,MAAM,CAAC+jB,MAAM,CAACZ,QAAQ,CAAC7O,KAAK,EAAE;AAC5B0P,MAAAA,QAAQ,EAAE3D,QAAQ;MAClBlK,IAAI,EAAE,CAAA,EAAGyJ,CAAC,CAAA,EAAA,CAAI;MACdzH,GAAG,EAAE,CAAA,EAAG0H,CAAC,CAAA,EAAA,CAAI;AACboE,MAAAA,MAAM,EAAE;AACV,KAAC,CAAC;IAEF1gB,WAAW,CAACC,gBAAgB,CAAC2f,QAAQ,EAAE,WAAW,EAAEW,cAAc,CAAC;AACnE,IAAA,OAAOA,cAAc;AACvB,EAAA;;AAEA;AACA;AACA;;AAEAvC,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,IAAI,IAAI,CAAC7W,OAAO,CAAC4V,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC5V,OAAO,CAAC4V,cAAc,KAAK,MAAM,EAAE;AACrFrhB,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,YAAY,EAAE/B,uBAAuB,EAAErgB,KAAK,IAAI;AAC1E,QAAA,IAAI,CAACqlB,sBAAsB,CAACrlB,KAAK,CAAC;AACpC,MAAA,CAAC,CAAC;AAEFI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,YAAY,EAAEhC,gBAAgB,EAAEpgB,KAAK,IAAI;AACnE,QAAA,IAAI,CAACslB,eAAe,CAACtlB,KAAK,CAAC;AAC7B,MAAA,CAAC,CAAC;MAEFI,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,WAAW,EAAEpiB,KAAK,IAAI;AAChD,QAAA,IAAI,CAACulB,mBAAmB,CAACvlB,KAAK,CAAC;AACjC,MAAA,CAAC,CAAC;AACJ,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC6L,OAAO,CAAC4V,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC5V,OAAO,CAAC4V,cAAc,KAAK,MAAM,EAAE;AACrFrhB,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,OAAO,EAAE/B,uBAAuB,EAAErgB,KAAK,IAAI;AACrE,QAAA,IAAI,CAACwlB,sBAAsB,CAACxlB,KAAK,CAAC;AACpC,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAqlB,sBAAsBA,CAACrlB,KAAK,EAAE;IAC5B,MAAMsD,OAAO,GAAGtD,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACuY,uBAAuB,CAAC;IAC7D,IAAI,CAAC/c,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,MAAMmiB,cAAc,GAAGniB,OAAO,CAACwE,OAAO,CAACsY,gBAAgB,CAAC;IACxD,MAAMsF,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;IACrE,IAAI,CAACC,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACC,0BAA0B,CAACD,OAAO,CAAC;AACxC,IAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;IAC1C,IAAI,CAACI,YAAY,CAACviB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,CAAC;AACrD,EAAA;EAEAH,eAAeA,CAACtlB,KAAK,EAAE;IACrB,MAAMylB,cAAc,GAAGzlB,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACsY,gBAAgB,CAAC;IAC7D,MAAMsF,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;AACrE,IAAA,IAAI,CAACC,OAAO,IAAI,CAAC,IAAI,CAACzD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACI,sBAAsB,CAAC9lB,KAAK,EAAE0lB,OAAO,CAAC,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACK,qBAAqB,CAACL,OAAO,EAAED,cAAc,CAAC;AACrD,EAAA;EAEAD,sBAAsBA,CAACxlB,KAAK,EAAE;IAC5B,MAAMsD,OAAO,GAAGtD,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACuY,uBAAuB,CAAC;IAC7D,IAAI,CAAC/c,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEAtD,KAAK,CAACyO,cAAc,EAAE;IACtBzO,KAAK,CAACgmB,eAAe,EAAE;AAEvB,IAAA,MAAMP,cAAc,GAAGniB,OAAO,CAACwE,OAAO,CAACsY,gBAAgB,CAAC;IACxD,MAAMsF,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;IACrE,IAAI,CAACC,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACzD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AACnC,MAAA,IAAI,CAACO,aAAa,CAACP,OAAO,EAAED,cAAc,CAAC;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACG,qBAAqB,CAACH,cAAc,CAAC;MAC1C,IAAI,CAACI,YAAY,CAACviB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,CAAC;AACrD,IAAA;AACF,EAAA;AAEAI,EAAAA,YAAYA,CAACviB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,EAAE;IAC7C,IAAI,IAAI,CAACxD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AACnC,MAAA;AACF,IAAA;AAEApiB,IAAAA,OAAO,CAACsB,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC7CtB,IAAAA,OAAO,CAACsB,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;;AAE7C;AACA;AACA;AACA;AACA8gB,IAAAA,OAAO,CAACjQ,KAAK,CAACyQ,OAAO,GAAG,GAAG;AAC3BR,IAAAA,OAAO,CAACvd,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;AACtCoW,IAAAA,cAAc,CAACtd,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;IAE7C,MAAM8W,OAAO,GAAG,IAAI,CAACC,sBAAsB,CAAC9iB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,CAAC;IAC7E,IAAI,CAACxD,aAAa,CAAClkB,GAAG,CAAC2nB,OAAO,EAAES,OAAO,CAAC;AAExC/lB,IAAAA,YAAY,CAACyC,EAAE,CAAC6iB,OAAO,EAAE,YAAY,EAAE,MAAM;AAC3C,MAAA,IAAI,CAACC,0BAA0B,CAACD,OAAO,CAAC;AAC1C,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAO,EAAAA,aAAaA,CAACP,OAAO,EAAED,cAAc,EAAE;IACrC,IAAI,CAAC,IAAI,CAACxD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AACpC,MAAA;AACF,IAAA;AAEA,IAAA,MAAMW,cAAc,GAAGpZ,cAAc,CAAC7L,IAAI,CAAC,CAAA,EAAGgf,gBAAgB,CAAA,CAAA,EAAID,eAAa,CAAA,CAAA,EAAI9Q,iBAAe,CAAA,CAAE,EAAEqW,OAAO,CAAC;AAC9G,IAAA,KAAK,MAAMY,MAAM,IAAID,cAAc,EAAE;AACnC,MAAA,MAAME,aAAa,GAAGD,MAAM,CAACxe,OAAO,CAACsY,gBAAgB,CAAC;AACtD,MAAA,IAAI,CAAC6F,aAAa,CAACK,MAAM,EAAEC,aAAa,CAAC;AAC3C,IAAA;IAEA,MAAMjjB,OAAO,GAAG2J,cAAc,CAACE,OAAO,CAACkT,uBAAuB,EAAEoF,cAAc,CAAC;IAE/E,MAAMU,OAAO,GAAG,IAAI,CAAClE,aAAa,CAAC5jB,GAAG,CAACqnB,OAAO,CAAC;AAC/C,IAAA,IAAIS,OAAO,EAAE;AACXA,MAAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,IAAI,CAAClE,aAAa,CAACljB,MAAM,CAAC2mB,OAAO,CAAC;AAClCtlB,IAAAA,YAAY,CAACC,GAAG,CAACqlB,OAAO,EAAE,YAAY,CAAC;AAEvC,IAAA,IAAIpiB,OAAO,EAAE;AACXA,MAAAA,OAAO,CAACsB,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAChD,IAAA;AAEA8gB,IAAAA,OAAO,CAACvd,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;AACzCoW,IAAAA,cAAc,CAACtd,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACAqW,IAAAA,OAAO,CAACjQ,KAAK,CAACyQ,OAAO,GAAG,EAAE;AAC5B,EAAA;AAEA9C,EAAAA,iBAAiBA,GAAG;IAClB,KAAK,MAAM,CAACsC,OAAO,CAAC,IAAI,IAAI,CAACzD,aAAa,EAAE;AAC1C,MAAA,MAAMwD,cAAc,GAAGC,OAAO,CAAC5d,OAAO,CAACsY,gBAAgB,CAAC;AACxD,MAAA,IAAI,CAAC6F,aAAa,CAACP,OAAO,EAAED,cAAc,CAAC;AAC7C,IAAA;AACF,EAAA;EAEAG,qBAAqBA,CAACY,qBAAqB,EAAE;AAC3C,IAAA,MAAMxK,MAAM,GAAGwK,qBAAqB,CAAC3lB,UAAU;AAC/C,IAAA,MAAM4lB,eAAe,GAAGxZ,cAAc,CAAC7L,IAAI,CAAC,CAAA,EAAGgf,gBAAgB,CAAA,GAAA,EAAMD,eAAa,CAAA,CAAA,EAAI9Q,iBAAe,CAAA,CAAE,EAAE2M,MAAM,CAAC;AAEhH,IAAA,KAAK,MAAM0K,WAAW,IAAID,eAAe,EAAE;AACzC,MAAA,MAAME,cAAc,GAAGD,WAAW,CAAC5e,OAAO,CAACsY,gBAAgB,CAAC;MAC5D,IAAIuG,cAAc,KAAKH,qBAAqB,EAAE;AAC5C,QAAA,IAAI,CAACP,aAAa,CAACS,WAAW,EAAEC,cAAc,CAAC;AACjD,MAAA;AACF,IAAA;AACF,EAAA;AAEAP,EAAAA,sBAAsBA,CAAC9iB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,EAAE;IACvD,MAAM/B,gBAAgB,GAAG+B,cAAc;AACvC,IAAA,MAAM9G,SAAS,GAAG+B,uBAAuB,CAACD,iBAAiB,CAAC;AAC5D,IAAA,MAAMoD,UAAU,GAAG,CACjBjG,MAAM,CAAC;AAAE4G,MAAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;KAAI,CAAC,EACtC9G,IAAI,CAAC;AACH+G,MAAAA,kBAAkB,EAAE,CAClBhE,uBAAuB,CAAC,aAAa,CAAC,EACtCA,uBAAuB,CAAC,SAAS,CAAC,EAClCA,uBAAuB,CAAC,WAAW,CAAC;KAEvC,CAAC,EACF7C,KAAK,CAAC;AAAE+I,MAAAA,OAAO,EAAE;AAAE,KAAC,CAAC,CACtB;IAED,MAAMC,cAAc,GAAGA,MAAM,IAAI,CAAC7C,sBAAsB,CAACN,gBAAgB,EAAEgC,OAAO,EAAE/G,SAAS,EAAEkF,UAAU,CAAC,CACvGiD,IAAI,CAAC7B,cAAc,IAAI;AACtB;AACA;AACAS,MAAAA,OAAO,CAACjQ,KAAK,CAACyQ,OAAO,GAAG,EAAE;AAC1B,MAAA,OAAOjB,cAAc;AACvB,IAAA,CAAC,CAAC;AAEJ4B,IAAAA,cAAc,EAAE;AAChB,IAAA,OAAOlD,UAAU,CAACD,gBAAgB,EAAEgC,OAAO,EAAEmB,cAAc,CAAC;AAC9D,EAAA;AAEAd,EAAAA,qBAAqBA,CAACL,OAAO,EAAED,cAAc,EAAE;AAC7C,IAAA,IAAI,CAACE,0BAA0B,CAACD,OAAO,CAAC;AAExC,IAAA,MAAMqB,SAAS,GAAGpd,UAAU,CAAC,MAAM;AACjC,MAAA,IAAI,CAACsc,aAAa,CAACP,OAAO,EAAED,cAAc,CAAC;AAC3C,MAAA,IAAI,CAACvD,qBAAqB,CAACnjB,MAAM,CAAC2mB,OAAO,CAAC;AAC5C,IAAA,CAAC,EAAE,IAAI,CAAC7Z,OAAO,CAAC6V,YAAY,CAAC;IAE7B,IAAI,CAACQ,qBAAqB,CAACnkB,GAAG,CAAC2nB,OAAO,EAAEqB,SAAS,CAAC;AACpD,EAAA;EAEApB,0BAA0BA,CAACD,OAAO,EAAE;IAClC,MAAMqB,SAAS,GAAG,IAAI,CAAC7E,qBAAqB,CAAC7jB,GAAG,CAACqnB,OAAO,CAAC;AACzD,IAAA,IAAIqB,SAAS,EAAE;MACb/L,YAAY,CAAC+L,SAAS,CAAC;AACvB,MAAA,IAAI,CAAC7E,qBAAqB,CAACnjB,MAAM,CAAC2mB,OAAO,CAAC;AAC5C,IAAA;AACF,EAAA;AAEArC,EAAAA,wBAAwBA,GAAG;IACzB,KAAK,MAAM0D,SAAS,IAAI,IAAI,CAAC7E,qBAAqB,CAACvjB,MAAM,EAAE,EAAE;MAC3Dqc,YAAY,CAAC+L,SAAS,CAAC;AACzB,IAAA;AAEA,IAAA,IAAI,CAAC7E,qBAAqB,CAAC8E,KAAK,EAAE;AACpC,EAAA;;AAEA;AACA;AACA;;EAEAzB,mBAAmBA,CAACvlB,KAAK,EAAE;IACzB,IAAI,CAACmiB,gBAAgB,GAAG;MACtBpB,CAAC,EAAE/gB,KAAK,CAACinB,OAAO;MAChBjG,CAAC,EAAEhhB,KAAK,CAACknB,OAAO;AAChBC,MAAAA,SAAS,EAAEC,IAAI,CAAClP,GAAG;KACpB;AACH,EAAA;AAEA4N,EAAAA,sBAAsBA,CAAC9lB,KAAK,EAAE0lB,OAAO,EAAE;AACrC,IAAA,IAAI,CAAC,IAAI,CAACvD,gBAAgB,EAAE;AAC1B,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,MAAMkF,WAAW,GAAG3B,OAAO,CAACtN,qBAAqB,EAAE;AACnD,IAAA,MAAMkP,UAAU,GAAG;MAAEvG,CAAC,EAAE/gB,KAAK,CAACinB,OAAO;MAAEjG,CAAC,EAAEhhB,KAAK,CAACknB;KAAS;AACzD,IAAA,MAAMK,OAAO,GAAG;AAAExG,MAAAA,CAAC,EAAE,IAAI,CAACoB,gBAAgB,CAACpB,CAAC;AAAEC,MAAAA,CAAC,EAAE,IAAI,CAACmB,gBAAgB,CAACnB;KAAG;AAE1E,IAAA,MAAMwG,KAAK,GAAGze,OAAK,EAAE;IACrB,MAAM0e,OAAO,GAAGD,KAAK,GAAGH,WAAW,CAAC5O,KAAK,GAAG4O,WAAW,CAAC/P,IAAI;AAC5D,IAAA,MAAMoQ,SAAS,GAAG;AAAE3G,MAAAA,CAAC,EAAE0G,OAAO;MAAEzG,CAAC,EAAEqG,WAAW,CAAC/N;KAAK;AACpD,IAAA,MAAMqO,YAAY,GAAG;AAAE5G,MAAAA,CAAC,EAAE0G,OAAO;MAAEzG,CAAC,EAAEqG,WAAW,CAACxC;KAAQ;IAE1D,OAAO,IAAI,CAAC+C,gBAAgB,CAACN,UAAU,EAAEC,OAAO,EAAEG,SAAS,EAAEC,YAAY,CAAC;AAC5E,EAAA;EAEAC,gBAAgBA,CAACC,KAAK,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IAClC,MAAMC,EAAE,GAAGtH,YAAY,CAACkH,KAAK,EAAEC,EAAE,EAAEC,EAAE,CAAC;IACtC,MAAMG,EAAE,GAAGvH,YAAY,CAACkH,KAAK,EAAEE,EAAE,EAAEC,EAAE,CAAC;IACtC,MAAMG,EAAE,GAAGxH,YAAY,CAACkH,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;IAAErqB,GAAG;AAAE2C,IAAAA;AAAO,GAAC,EAAE;IAC/B,MAAM2nB,WAAW,GAAG3nB,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC,IAAI,IAAI,CAACiC,KAAK;IAC/D,MAAM/N,KAAK,GAAGpH,cAAc,CAAC7L,IAAI,CAAC,CAAA,SAAA,EAAYmf,wBAAsB,CAAA,CAAE,EAAEgI,WAAW,CAAC,CACjFpjB,MAAM,CAACnH,OAAO,IAAIyJ,SAAS,CAACzJ,OAAO,CAAC,CAAC;AAExC,IAAA,IAAI,CAACqW,KAAK,CAACnR,MAAM,EAAE;AACjB,MAAA;AACF,IAAA;IAEA0G,oBAAoB,CAACyK,KAAK,EAAEzT,MAAM,EAAE3C,GAAG,KAAKyhB,gBAAc,EAAE,CAACrL,KAAK,CAACzR,QAAQ,CAAChC,MAAM,CAAC,CAAC,CAACqZ,KAAK,EAAE;AAC9F,EAAA;EAEAuO,qBAAqBA,CAACxoB,KAAK,EAAE;IAC3B,MAAM;MAAE/B,GAAG;AAAE2C,MAAAA;AAAO,KAAC,GAAGZ,KAAK;AAC7B,IAAA,MAAMwnB,KAAK,GAAGze,OAAK,EAAE;AAErB,IAAA,MAAM0f,QAAQ,GAAGjB,KAAK,GAAGtX,gBAAc,GAAGC,iBAAe;AACzD,IAAA,MAAMuY,OAAO,GAAGlB,KAAK,GAAGrX,iBAAe,GAAGD,gBAAc;AAExD,IAAA,MAAMuV,cAAc,GAAG7kB,MAAM,CAACkH,OAAO,CAACsY,gBAAgB,CAAC;IACvD,MAAMuI,gBAAgB,GAAGlD,cAAc,IAAI7kB,MAAM,CAAC0M,OAAO,CAAC+S,uBAAuB,CAAC;IAElF,IAAI,CAACpiB,GAAG,KAAK4hB,WAAS,IAAI5hB,GAAG,KAAK6hB,WAAS,KAAK6I,gBAAgB,EAAE;MAChE3oB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MAEvB,MAAMN,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;AACrE,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;QAC1C,IAAI,CAACI,YAAY,CAACjlB,MAAM,EAAE8kB,OAAO,EAAED,cAAc,CAAC;AAClD5N,QAAAA,qBAAqB,CAAC,MAAM;UAC1B,MAAM+Q,SAAS,GAAG3b,cAAc,CAACE,OAAO,CAACoT,wBAAsB,EAAEmF,OAAO,CAAC;AACzE,UAAA,IAAIkD,SAAS,EAAE;YACbA,SAAS,CAAC3O,KAAK,EAAE;AACnB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,IAAIhc,GAAG,KAAKwqB,QAAQ,IAAIE,gBAAgB,EAAE;MACxC3oB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MAEvB,MAAMN,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;AACrE,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;QAC1C,IAAI,CAACI,YAAY,CAACjlB,MAAM,EAAE8kB,OAAO,EAAED,cAAc,CAAC;AAClD5N,QAAAA,qBAAqB,CAAC,MAAM;UAC1B,MAAM+Q,SAAS,GAAG3b,cAAc,CAACE,OAAO,CAACoT,wBAAsB,EAAEmF,OAAO,CAAC;AACzE,UAAA,IAAIkD,SAAS,EAAE;YACbA,SAAS,CAAC3O,KAAK,EAAE;AACnB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAIhc,GAAG,KAAKyqB,OAAO,EAAE;AACnB,MAAA,MAAMH,WAAW,GAAG3nB,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC;AACjD,MAAA,MAAM0I,oBAAoB,GAAGN,WAAW,EAAEzgB,OAAO,CAACsY,gBAAgB,CAAC;AAEnE,MAAA,IAAIyI,oBAAoB,EAAE;QACxB7oB,KAAK,CAACyO,cAAc,EAAE;QACtBzO,KAAK,CAACgmB,eAAe,EAAE;QAEvB,MAAM8C,aAAa,GAAG7b,cAAc,CAACE,OAAO,CAACkT,uBAAuB,EAAEwI,oBAAoB,CAAC;AAC3F,QAAA,IAAI,CAAC5C,aAAa,CAACsC,WAAW,EAAEM,oBAAoB,CAAC;AACrD,QAAA,IAAIC,aAAa,EAAE;UACjBA,aAAa,CAAC7O,KAAK,EAAE;AACvB,QAAA;AAEA,QAAA,OAAO,IAAI;AACb,MAAA;AACF,IAAA;AAEA,IAAA,IAAIhc,GAAG,KAAK0hB,UAAQ,IAAI1hB,GAAG,KAAK2hB,SAAO,EAAE;MACvC5f,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;AAEvB,MAAA,MAAMuC,WAAW,GAAG3nB,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC;MACjD,MAAM9L,KAAK,GAAGpH,cAAc,CAAC7L,IAAI,CAAC,CAAA,SAAA,EAAYmf,wBAAsB,CAAA,CAAE,EAAEgI,WAAW,CAAC,CACjFpjB,MAAM,CAACnH,OAAO,IAAIyJ,SAAS,CAACzJ,OAAO,CAAC,CAAC;MAExC,IAAIqW,KAAK,CAACnR,MAAM,EAAE;AAChB,QAAA,MAAM6lB,UAAU,GAAG9qB,GAAG,KAAK0hB,UAAQ,GAAGtL,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC2U,EAAE,CAAC,EAAE,CAAC;QAC7DD,UAAU,CAAC9O,KAAK,EAAE;AACpB,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,OAAOgP,UAAUA,CAACjpB,KAAK,EAAE;AACvB,IAAA,IAAIA,KAAK,CAACiQ,MAAM,KAAK8P,kBAAkB,IAAK/f,KAAK,CAACM,IAAI,KAAK,OAAO,IAAIN,KAAK,CAAC/B,GAAG,KAAKuhB,SAAQ,EAAE;AAC5F,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMthB,QAAQ,IAAIyjB,IAAI,CAACC,cAAc,EAAE;AAC1C,MAAA,IAAI1jB,QAAQ,CAAC2N,OAAO,CAACoV,SAAS,KAAK,KAAK,EAAE;AACxC,QAAA;AACF,MAAA;AAEA,MAAA,MAAMiI,YAAY,GAAGlpB,KAAK,CAACkpB,YAAY,EAAE;MACzC,MAAMC,YAAY,GAAGD,YAAY,CAACtmB,QAAQ,CAAC1E,QAAQ,CAACkkB,KAAK,CAAC;AAC1D,MAAA,IACE8G,YAAY,CAACtmB,QAAQ,CAAC1E,QAAQ,CAAC0N,QAAQ,CAAC,IACvC1N,QAAQ,CAAC2N,OAAO,CAACoV,SAAS,KAAK,QAAQ,IAAI,CAACkI,YAAa,IACzDjrB,QAAQ,CAAC2N,OAAO,CAACoV,SAAS,KAAK,SAAS,IAAIkI,YAAa,EAC1D;AACA,QAAA;AACF,MAAA;AAEA,MAAA,IAAIjrB,QAAQ,CAACkkB,KAAK,CAACtgB,QAAQ,CAAC9B,KAAK,CAACY,MAAM,CAAC,KAAMZ,KAAK,CAACM,IAAI,KAAK,OAAO,IAAIN,KAAK,CAAC/B,GAAG,KAAKuhB,SAAO,IAAK,oCAAoC,CAACjU,IAAI,CAACvL,KAAK,CAACY,MAAM,CAAC4N,OAAO,CAAC,CAAC,EAAE;AACnK,QAAA;AACF,MAAA;AAEA,MAAA,MAAM3M,aAAa,GAAG;QAAEA,aAAa,EAAE3D,QAAQ,CAAC0N;OAAU;AAE1D,MAAA,IAAI5L,KAAK,CAACM,IAAI,KAAK,OAAO,EAAE;QAC1BuB,aAAa,CAAC0M,UAAU,GAAGvO,KAAK;AAClC,MAAA;AAEA9B,MAAAA,QAAQ,CAAC8kB,aAAa,CAACnhB,aAAa,CAAC;AACvC,IAAA;AACF,EAAA;EAEA,OAAOunB,qBAAqBA,CAACppB,KAAK,EAAE;IAClC,MAAMqpB,OAAO,GAAG,iBAAiB,CAAC9d,IAAI,CAACvL,KAAK,CAACY,MAAM,CAAC4N,OAAO,CAAC;AAC5D,IAAA,MAAM8a,aAAa,GAAGtpB,KAAK,CAAC/B,GAAG,KAAKshB,YAAU;AAC9C,IAAA,MAAMgK,eAAe,GAAG,CAAC9J,cAAY,EAAEC,gBAAc,CAAC,CAAC9c,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AAC1E,IAAA,MAAMurB,kBAAkB,GAAG,CAACtZ,gBAAc,EAAEC,iBAAe,CAAC,CAACvN,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AAChF,IAAA,MAAMwrB,gBAAgB,GAAG,CAAC9J,UAAQ,EAAEC,SAAO,CAAC,CAAChd,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AAChE,IAAA,MAAMyrB,mBAAmB,GAAG,CAAC7J,WAAS,EAAEC,WAAS,CAAC,CAACld,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;IAEtE,MAAM0qB,gBAAgB,GAAG3oB,KAAK,CAACY,MAAM,CAAC0M,OAAO,CAAC+S,uBAAuB,CAAC;AAEtE,IAAA,IAAI,CAACkJ,eAAe,IAAI,CAACD,aAAa,IAAI,CAACE,kBAAkB,IAAI,CAACC,gBAAgB,IAC9E,EAAEC,mBAAmB,IAAIf,gBAAgB,CAAC,EAAE;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAIU,OAAO,IAAI,CAACC,aAAa,EAAE;AAC7B,MAAA;AACF,IAAA;IAEA,MAAMK,eAAe,GAAG,IAAI,CAACrc,OAAO,CAACuC,sBAAoB,CAAC,GACxD,IAAI,GACH5C,cAAc,CAACS,IAAI,CAAC,IAAI,EAAEmC,sBAAoB,CAAC,CAAC,CAAC,CAAC,IACjD5C,cAAc,CAACrO,IAAI,CAAC,IAAI,EAAEiR,sBAAoB,CAAC,CAAC,CAAC,CAAC,IAClD5C,cAAc,CAACE,OAAO,CAAC0C,sBAAoB,EAAE7P,KAAK,CAACE,cAAc,CAACW,UAAU,CAAE;IAElF,IAAI,CAAC8oB,eAAe,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMzrB,QAAQ,GAAGyjB,IAAI,CAACnV,mBAAmB,CAACmd,eAAe,CAAC;AAE1D,IAAA,IAAI,CAACH,kBAAkB,IAAIC,gBAAgB,IAAKC,mBAAmB,IAAIf,gBAAiB,KAAKzqB,QAAQ,CAACsqB,qBAAqB,CAACxoB,KAAK,CAAC,EAAE;AAClI,MAAA;AACF,IAAA;AAEA,IAAA,IAAIupB,eAAe,EAAE;MACnBvpB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MACvB9nB,QAAQ,CAAC0e,IAAI,EAAE;AACf1e,MAAAA,QAAQ,CAACoqB,eAAe,CAACtoB,KAAK,CAAC;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,IAAIspB,aAAa,IAAIprB,QAAQ,CAACwe,QAAQ,EAAE,EAAE;MACxC1c,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MAEvB,MAAMuC,WAAW,GAAGvoB,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC;AACvD,MAAA,MAAM0I,oBAAoB,GAAGN,WAAW,EAAEzgB,OAAO,CAACsY,gBAAgB,CAAC;MAEnE,IAAIyI,oBAAoB,IAAI3qB,QAAQ,CAAC+jB,aAAa,CAAC3jB,IAAI,GAAG,CAAC,EAAE;QAC3D,MAAMwqB,aAAa,GAAG7b,cAAc,CAACE,OAAO,CAACkT,uBAAuB,EAAEwI,oBAAoB,CAAC;AAC3F3qB,QAAAA,QAAQ,CAAC+nB,aAAa,CAACsC,WAAW,EAAEM,oBAAoB,CAAC;AACzD,QAAA,IAAIC,aAAa,EAAE;UACjBA,aAAa,CAAC7O,KAAK,EAAE;AACvB,QAAA;AAEA,QAAA;AACF,MAAA;MAEA/b,QAAQ,CAACye,IAAI,EAAE;MACfgN,eAAe,CAAC1P,KAAK,EAAE;AACzB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA7Z,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEuZ,sBAAsB,EAAEpQ,sBAAoB,EAAE8R,IAAI,CAACyH,qBAAqB,CAAC;AACnGhpB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEuZ,sBAAsB,EAAEE,eAAa,EAAEwB,IAAI,CAACyH,qBAAqB,CAAC;AAC5FhpB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAE6R,IAAI,CAACsH,UAAU,CAAC;AAChE7oB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEwZ,oBAAoB,EAAEyB,IAAI,CAACsH,UAAU,CAAC;AAChE7oB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;EACrFA,KAAK,CAACyO,cAAc,EAAE;EACtBkT,IAAI,CAACnV,mBAAmB,CAAC,IAAI,CAAC,CAACwD,MAAM,EAAE;AACzC,CAAC,CAAC;;ACl+BF;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;;AAEA,MAAMvF,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAM4P,YAAU,GAAG,QAAQ;AAC3B,MAAMC,OAAO,GAAG,KAAK;AACrB,MAAMC,cAAY,GAAG,SAAS;AAC9B,MAAMC,gBAAc,GAAG,WAAW;AAClC,MAAMC,UAAQ,GAAG,MAAM;AACvB,MAAMC,SAAO,GAAG,KAAK;AACrB,MAAMC,SAAS,GAAG,OAAO;AACzB,MAAMC,SAAS,GAAG,GAAG;AAErB,MAAM8J,cAAY,GAAG,CAAA,MAAA,EAAS1d,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAMoP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMN,iBAAe,GAAG,MAAM;AAC9B,MAAMwa,mBAAmB,GAAG,UAAU;AACtC,MAAMC,sBAAsB,GAAG,sBAAsB;AAErD,MAAMja,sBAAoB,GAAG,6BAA6B;AAC1D,MAAMsQ,eAAa,GAAG,OAAO;AAC7B,MAAM4J,kBAAkB,GAAG,2BAA2B;AACtD,MAAMxJ,sBAAsB,GAAG,yDAAyD;AACxF,MAAMyJ,cAAc,GAAG,iBAAiB;AACxC,MAAMC,qBAAqB,GAAG,wBAAwB;AACtD,MAAMC,mBAAmB,GAAG,sBAAsB;AAElD,MAAM3f,SAAO,GAAG;AACd2W,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BiJ,EAAAA,QAAQ,EAAE,KAAK;AACfzd,EAAAA,IAAI,EAAE,IAAI;AACVkR,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACdwM,EAAAA,WAAW,EAAE,EAAE;AACfzL,EAAAA,SAAS,EAAE,cAAc;AACzB0L,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,eAAe,EAAE;AACnB,CAAC;AAED,MAAM9f,aAAW,GAAG;AAClB0W,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BiJ,EAAAA,QAAQ,EAAE,SAAS;AACnBzd,EAAAA,IAAI,EAAE,eAAe;AACrBkR,EAAAA,MAAM,EAAE,yBAAyB;AACjCwM,EAAAA,WAAW,EAAE,QAAQ;AACrBzL,EAAAA,SAAS,EAAE,QAAQ;AACnB0L,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,eAAe,EAAE;AACnB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,QAAQ,SAAS5e,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC4f,OAAO,GAAG,IAAI,CAAC5e,QAAQ;AAC5B,IAAA,IAAI,CAACwW,KAAK,GAAGnV,cAAc,CAACrO,IAAI,CAAC,IAAI,CAAC4rB,OAAO,EAAErK,eAAa,CAAC,CAAC,CAAC,CAAC;AAChE,IAAA,IAAI,CAACsK,aAAa,GAAGxd,cAAc,CAACE,OAAO,CAAC6c,cAAc,EAAE,IAAI,CAACQ,OAAO,CAAC;AACzE,IAAA,IAAI,CAACE,YAAY,GAAGzd,cAAc,CAACE,OAAO,CAAC8c,qBAAqB,EAAE,IAAI,CAAC7H,KAAK,CAAC;AAC7E,IAAA,IAAI,CAACuI,UAAU,GAAG1d,cAAc,CAACE,OAAO,CAAC+c,mBAAmB,EAAE,IAAI,CAAC9H,KAAK,CAAC;IACzE,IAAI,CAACwI,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACC,kBAAkB,EAAE;IACzB,IAAI,CAACC,mBAAmB,EAAE;IAC1B,IAAI,CAACC,qBAAqB,EAAE;IAC5B,IAAI,CAACvX,kBAAkB,EAAE;AAC3B,EAAA;;AAEA;EACA,WAAWlJ,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAAC0M,QAAQ,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AACpD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI5U,UAAU,CAAC,IAAI,CAACwiB,OAAO,CAAC,IAAI,IAAI,CAAC9N,QAAQ,EAAE,EAAE;AAC/C,MAAA;AACF,IAAA;IAEA,MAAMiG,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACknB,OAAO,EAAEpP,YAAU,CAAC;IAChE,IAAIuH,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACob,aAAa,CAACjO,IAAI,EAAE;IAEzB,IAAI,IAAI,CAAC8N,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAAC7rB,KAAK,GAAG,EAAE;AAC5B,MAAA,IAAI,CAACosB,YAAY,CAAC,EAAE,CAAC;MACrBpT,qBAAqB,CAAC,MAAM,IAAI,CAAC6S,YAAY,CAACzQ,KAAK,EAAE,CAAC;AACxD,IAAA;IAEA7Z,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACknB,OAAO,EAAEnP,aAAW,CAAC;AACjD,EAAA;AAEAsB,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,EAAE;AACpB,MAAA;AACF,IAAA;IAEA,MAAM+G,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACknB,OAAO,EAAElP,YAAU,CAAC;IAChE,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACob,aAAa,CAAClO,IAAI,EAAE;IACzBvc,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACknB,OAAO,EAAEjP,cAAY,CAAC;AAClD,EAAA;AAEAtP,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAAC4e,aAAa,EAAE;AACtB,MAAA,IAAI,CAACA,aAAa,CAAC5e,OAAO,EAAE;MAC5B,IAAI,CAAC4e,aAAa,GAAG,IAAI;AAC3B,IAAA;IAEA,IAAI,IAAI,CAACD,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAAC9rB,MAAM,EAAE;MAC1B,IAAI,CAAC8rB,YAAY,GAAG,IAAI;AAC1B,IAAA;IAEAxqB,YAAY,CAACC,GAAG,CAAC,IAAI,CAAC+hB,KAAK,EAAElW,WAAS,CAAC;IACvC9L,YAAY,CAACC,GAAG,CAAC,IAAI,CAACmqB,OAAO,EAAEte,WAAS,CAAC;IAEzC,KAAK,CAACD,OAAO,EAAE;AACjB,EAAA;;AAEA;AACAyQ,EAAAA,QAAQA,GAAG;IACT,OAAO,IAAI,CAAC0F,KAAK,CAACja,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACvD,EAAA;AAEAyb,EAAAA,kBAAkBA,GAAG;IACnB,MAAM;AAAEpe,MAAAA;KAAM,GAAG,IAAI,CAACb,OAAO;IAC7B,IAAI,CAACa,IAAI,EAAE;AACT,MAAA;AACF,IAAA;IAEA,IAAI,CAACke,YAAY,GAAGlkB,QAAQ,CAACwkB,aAAa,CAAC,OAAO,CAAC;AACnD,IAAA,IAAI,CAACN,YAAY,CAACtqB,IAAI,GAAG,QAAQ;AACjC,IAAA,IAAI,CAACsqB,YAAY,CAACle,IAAI,GAAGA,IAAI;AAC7B,IAAA,IAAI,CAACke,YAAY,CAAC/rB,KAAK,GAAG,EAAE;AAC5B,IAAA,IAAI,CAAC2rB,OAAO,CAAC3pB,UAAU,CAACsqB,YAAY,CAAC,IAAI,CAACP,YAAY,EAAE,IAAI,CAACJ,OAAO,CAAC;AACvE,EAAA;AAEAO,EAAAA,mBAAmBA,GAAG;IACpB,IAAI,CAACF,aAAa,GAAG,IAAIlJ,IAAI,CAAC,IAAI,CAAC6I,OAAO,EAAE;MAC1ClJ,IAAI,EAAE,IAAI,CAACc,KAAK;MAChBnB,SAAS,EAAE,IAAI,CAACpV,OAAO,CAACse,QAAQ,GAAG,SAAS,GAAG,IAAI;AACnDjJ,MAAAA,QAAQ,EAAE,IAAI,CAACrV,OAAO,CAACqV,QAAQ;AAC/BtD,MAAAA,MAAM,EAAE,IAAI,CAAC/R,OAAO,CAAC+R,MAAM;AAC3Be,MAAAA,SAAS,EAAE,IAAI,CAAC9S,OAAO,CAAC8S;AAC1B,KAAC,CAAC;AACJ,EAAA;AAEAqM,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,MAAMI,aAAa,GAAG,IAAI,CAACC,iBAAiB,EAAE;AAC9C,IAAA,IAAID,aAAa,CAACloB,MAAM,GAAG,CAAC,EAAE;MAC5B,IAAI,CAACooB,iBAAiB,EAAE;MACxB,IAAI,CAACC,kBAAkB,EAAE;AAC3B,IAAA,CAAC,MAAM;MACL,IAAI,CAACC,gBAAgB,EAAE;AACzB,IAAA;AACF,EAAA;AAEA/X,EAAAA,kBAAkBA,GAAG;AACnBrT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,OAAO,EAAE2H,kBAAkB,EAAE/pB,KAAK,IAAI;MAChE,MAAMkW,IAAI,GAAGlW,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACiiB,kBAAkB,CAAC;AACrD,MAAA,IAAI,CAAC7T,IAAI,IAAIlO,UAAU,CAACkO,IAAI,CAAC,EAAE;AAC7B,QAAA;AACF,MAAA;MAEAlW,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;AACvB,MAAA,IAAI,CAACyF,WAAW,CAACvV,IAAI,CAAC;AACxB,IAAA,CAAC,CAAC;IAEF9V,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC2nB,OAAO,EAAE,SAAS,EAAExqB,KAAK,IAAI;AAChD,MAAA,IAAI,CAAC0rB,oBAAoB,CAAC1rB,KAAK,CAAC;AAClC,IAAA,CAAC,CAAC;IAEFI,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,SAAS,EAAEpiB,KAAK,IAAI;AAC9C,MAAA,IAAI,CAAC2rB,kBAAkB,CAAC3rB,KAAK,CAAC;AAChC,IAAA,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC0qB,YAAY,EAAE;MACrBtqB,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC6nB,YAAY,EAAE,OAAO,EAAE,MAAM;QAChD,IAAI,CAACO,YAAY,CAAC,IAAI,CAACP,YAAY,CAAC7rB,KAAK,CAAC;AAC5C,MAAA,CAAC,CAAC;MAEFuB,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC6nB,YAAY,EAAE,SAAS,EAAE1qB,KAAK,IAAI;AACrD,QAAA,IAAIA,KAAK,CAAC/B,GAAG,KAAKyhB,gBAAc,EAAE;UAChC1f,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,MAAM4F,KAAK,GAAG,IAAI,CAACuX,gBAAgB,EAAE;AACrC,UAAA,IAAIvX,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AACpBmR,YAAAA,KAAK,CAAC,CAAC,CAAC,CAAC4F,KAAK,EAAE;AAClB,UAAA;AACF,QAAA;AAEA,QAAA,IAAIja,KAAK,CAAC/B,GAAG,KAAKshB,YAAU,EAAE;UAC5B,IAAI,CAAC5C,IAAI,EAAE;AACX,UAAA,IAAI,CAAC6N,OAAO,CAACvQ,KAAK,EAAE;AACtB,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAwR,WAAWA,CAACvV,IAAI,EAAE;AAChB,IAAA,IAAI,IAAI,CAACrK,OAAO,CAACse,QAAQ,EAAE;AACzBjU,MAAAA,IAAI,CAAC/N,SAAS,CAAC6H,MAAM,CAAC6Z,mBAAmB,CAAC;AAC1C3T,MAAAA,IAAI,CAACtR,YAAY,CAAC,eAAe,EAAEsR,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC+nB,mBAAmB,CAAC,CAAC;AAClF,IAAA,CAAC,MAAM;AACL,MAAA,MAAMgC,kBAAkB,GAAG5e,cAAc,CAAC7L,IAAI,CAAC,CAAA,CAAA,EAAIyoB,mBAAmB,CAAA,CAAE,EAAE,IAAI,CAACzH,KAAK,CAAC;AACrF,MAAA,KAAK,MAAM1U,IAAI,IAAIme,kBAAkB,EAAE;AACrCne,QAAAA,IAAI,CAACvF,SAAS,CAACrJ,MAAM,CAAC+qB,mBAAmB,CAAC;AAC1Cnc,QAAAA,IAAI,CAAC9I,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAC7C,MAAA;AAEAsR,MAAAA,IAAI,CAAC/N,SAAS,CAACiM,GAAG,CAACyV,mBAAmB,CAAC;AACvC3T,MAAAA,IAAI,CAACtR,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC5C,IAAA;IAEA,IAAI,CAAC0mB,iBAAiB,EAAE;IACxB,IAAI,CAACC,kBAAkB,EAAE;AAEzB,IAAA,MAAM1sB,KAAK,GAAG,IAAI,CAACgN,OAAO,CAACse,QAAQ,GACjC,IAAI,CAACkB,iBAAiB,EAAE,CAACve,GAAG,CAACkB,EAAE,IAAIA,EAAE,CAAC9I,OAAO,CAAC4mB,OAAO,CAAC,GACtD5V,IAAI,CAAChR,OAAO,CAAC4mB,OAAO;IAEtB1rB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACknB,OAAO,EAAEZ,cAAY,EAAE;MAC/C/qB,KAAK;AACLqX,MAAAA;AACF,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC,IAAI,CAACrK,OAAO,CAACse,QAAQ,EAAE;MAC1B,IAAI,CAACxN,IAAI,EAAE;AACX,MAAA,IAAI,CAAC6N,OAAO,CAACvQ,KAAK,EAAE;AACtB,IAAA;AACF,EAAA;AAEAqR,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMF,aAAa,GAAG,IAAI,CAACC,iBAAiB,EAAE;AAE9C,IAAA,IAAID,aAAa,CAACloB,MAAM,KAAK,CAAC,EAAE;MAC9B,IAAI,CAACsoB,gBAAgB,EAAE;AACvB,MAAA;AACF,IAAA;IAEA,IAAI,CAACf,aAAa,CAACtiB,SAAS,CAACrJ,MAAM,CAACgrB,sBAAsB,CAAC;IAE3D,IAAI,IAAI,CAACje,OAAO,CAACse,QAAQ,IAAIiB,aAAa,CAACloB,MAAM,GAAG,CAAC,EAAE;MACrD,IAAI,CAACunB,aAAa,CAACsB,WAAW,GAAG,CAAA,EAAGX,aAAa,CAACloB,MAAM,CAAA,SAAA,CAAW;AACrE,IAAA,CAAC,MAAM;AACL,MAAA,MAAMgT,IAAI,GAAGkV,aAAa,CAAC,CAAC,CAAC;MAC7B,MAAMtQ,KAAK,GAAG7N,cAAc,CAACE,OAAO,CAAC,uCAAuC,EAAE+I,IAAI,CAAC;AACnF,MAAA,IAAI,CAACuU,aAAa,CAACsB,WAAW,GAAGjR,KAAK,GAAGA,KAAK,CAACiR,WAAW,GAAG7V,IAAI,CAAC6V,WAAW,CAAClf,IAAI,EAAE;AACtF,IAAA;AACF,EAAA;AAEA2e,EAAAA,gBAAgBA,GAAG;IACjB,MAAM;AAAEpB,MAAAA;KAAa,GAAG,IAAI,CAACve,OAAO;AACpC,IAAA,IAAIue,WAAW,EAAE;AACf,MAAA,IAAI,CAACK,aAAa,CAACsB,WAAW,GAAG3B,WAAW;MAC5C,IAAI,CAACK,aAAa,CAACtiB,SAAS,CAACiM,GAAG,CAAC0V,sBAAsB,CAAC;AAC1D,IAAA;AACF,EAAA;AAEAyB,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAI,CAAC,IAAI,CAACX,YAAY,EAAE;AACtB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMQ,aAAa,GAAG,IAAI,CAACC,iBAAiB,EAAE;AAC9C,IAAA,MAAM1sB,MAAM,GAAGysB,aAAa,CAACte,GAAG,CAACkB,EAAE,IAAIA,EAAE,CAAC9I,OAAO,CAAC4mB,OAAO,CAAC;IAC1D,IAAI,CAAClB,YAAY,CAAC/rB,KAAK,GAAG,IAAI,CAACgN,OAAO,CAACse,QAAQ,GAAGxrB,MAAM,CAACqO,IAAI,CAAC,GAAG,CAAC,GAAIrO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAG;AACxF,EAAA;AAEA0sB,EAAAA,iBAAiBA,GAAG;IAClB,OAAOpe,cAAc,CAAC7L,IAAI,CAAC,CAAA,CAAA,EAAIyoB,mBAAmB,CAAA,CAAE,EAAE,IAAI,CAACzH,KAAK,CAAC;AACnE,EAAA;AAEAwJ,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,OAAO3e,cAAc,CAAC7L,IAAI,CAACmf,sBAAsB,EAAE,IAAI,CAAC6B,KAAK,CAAC,CAC3Djd,MAAM,CAAC+Q,IAAI,IAAIzO,SAAS,CAACyO,IAAI,CAAC,CAAC;AACpC,EAAA;EAEA+U,YAAYA,CAACe,KAAK,EAAE;AAClB,IAAA,MAAMC,eAAe,GAAG,IAAI,CAACC,cAAc,CAACF,KAAK,CAACvnB,WAAW,EAAE,CAACoI,IAAI,EAAE,CAAC;IACvE,MAAMwH,KAAK,GAAGpH,cAAc,CAAC7L,IAAI,CAAC2oB,kBAAkB,EAAE,IAAI,CAAC3H,KAAK,CAAC;IACjE,IAAI+J,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,MAAMjW,IAAI,IAAI7B,KAAK,EAAE;AACxB,MAAA,MAAM+X,IAAI,GAAG,IAAI,CAACF,cAAc,CAAChW,IAAI,CAAC6V,WAAW,CAACtnB,WAAW,EAAE,CAACoI,IAAI,EAAE,CAAC;MACvE,MAAMS,OAAO,GAAG,CAAC2e,eAAe,IAAIG,IAAI,CAACxpB,QAAQ,CAACqpB,eAAe,CAAC;MAClE/V,IAAI,CAACT,KAAK,CAAC2L,OAAO,GAAG9T,OAAO,GAAG,EAAE,GAAG,MAAM;AAC1C,MAAA,IAAIA,OAAO,EAAE;AACX6e,QAAAA,YAAY,EAAE;AAChB,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACxB,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAACxiB,SAAS,CAAC6H,MAAM,CAAC,QAAQ,EAAEmc,YAAY,GAAG,CAAC,CAAC;AAC9D,IAAA;AACF,EAAA;EAEAD,cAAcA,CAACE,IAAI,EAAE;AACnB,IAAA,IAAI,IAAI,CAACvgB,OAAO,CAACye,eAAe,EAAE;AAChC,MAAA,OAAO8B,IAAI,CAACC,SAAS,CAAC,KAAK,CAAC,CAACnqB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAC9D,IAAA;AAEA,IAAA,OAAOkqB,IAAI;AACb,EAAA;EAEAV,oBAAoBA,CAAC1rB,KAAK,EAAE;IAC1B,MAAM;AAAE/B,MAAAA;AAAI,KAAC,GAAG+B,KAAK;AAErB,IAAA,IAAI/B,GAAG,KAAKyhB,gBAAc,IAAIzhB,GAAG,KAAKwhB,cAAY,EAAE;MAClDzf,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,IAAI,CAAC,IAAI,CAACiO,QAAQ,EAAE,EAAE;QACpB,IAAI,CAACE,IAAI,EAAE;AACb,MAAA;AAEA,MAAA,MAAMvI,KAAK,GAAG,IAAI,CAACuX,gBAAgB,EAAE;AACrC,MAAA,IAAIvX,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AACpB,QAAA,MAAMtC,MAAM,GAAG3C,GAAG,KAAKyhB,gBAAc,GAAGrL,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC2U,EAAE,CAAC,EAAE,CAAC;QAC/DpoB,MAAM,CAACqZ,KAAK,EAAE;AAChB,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAChc,GAAG,KAAK4hB,SAAS,IAAI5hB,GAAG,KAAK6hB,SAAS,KAAK,CAAC,IAAI,CAACpD,QAAQ,EAAE,EAAE;MAChE1c,KAAK,CAACyO,cAAc,EAAE;MACtB,IAAI,CAACmO,IAAI,EAAE;AACb,IAAA;AACF,EAAA;EAEA+O,kBAAkBA,CAAC3rB,KAAK,EAAE;IACxB,MAAM;MAAE/B,GAAG;AAAE2C,MAAAA;AAAO,KAAC,GAAGZ,KAAK;IAE7B,IAAI/B,GAAG,KAAKshB,YAAU,EAAE;MACtBvf,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MACvB,IAAI,CAACrJ,IAAI,EAAE;AACX,MAAA,IAAI,CAAC6N,OAAO,CAACvQ,KAAK,EAAE;AACpB,MAAA;AACF,IAAA;IAEA,IAAIhc,GAAG,KAAKuhB,OAAO,EAAE;MACnB,IAAI,CAAC7C,IAAI,EAAE;AACX,MAAA;AACF,IAAA;AAEA,IAAA,MAAM0M,OAAO,GAAGzoB,MAAM,CAAC0M,OAAO,CAAC,OAAO,CAAC;AAEvC,IAAA,IAAIrP,GAAG,KAAKyhB,gBAAc,IAAIzhB,GAAG,KAAKwhB,cAAY,EAAE;MAClDzf,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,MAAM4F,KAAK,GAAG,IAAI,CAACuX,gBAAgB,EAAE;AACrC,MAAA,IAAIvX,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;QACpB0G,oBAAoB,CAACyK,KAAK,EAAEzT,MAAM,EAAE3C,GAAG,KAAKyhB,gBAAc,EAAE,CAACrL,KAAK,CAACzR,QAAQ,CAAChC,MAAM,CAAC,CAAC,CAACqZ,KAAK,EAAE;AAC9F,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAIhc,GAAG,KAAK0hB,UAAQ,IAAI1hB,GAAG,KAAK2hB,SAAO,EAAE;MACvC5f,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,MAAM4F,KAAK,GAAG,IAAI,CAACuX,gBAAgB,EAAE;AACrC,MAAA,IAAIvX,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AACpB,QAAA,MAAM6lB,UAAU,GAAG9qB,GAAG,KAAK0hB,UAAQ,GAAGtL,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC2U,EAAE,CAAC,EAAE,CAAC;QAC7DD,UAAU,CAAC9O,KAAK,EAAE;AACpB,MAAA;AAEA,MAAA;AACF,IAAA;IAEA,IAAI,CAAChc,GAAG,KAAK4hB,SAAS,IAAI5hB,GAAG,KAAK6hB,SAAS,KAAK,CAACuJ,OAAO,EAAE;MACxDrpB,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,MAAMyH,IAAI,GAAGtV,MAAM,CAACkH,OAAO,CAACiiB,kBAAkB,CAAC;AAC/C,MAAA,IAAI7T,IAAI,IAAI,CAAClO,UAAU,CAACkO,IAAI,CAAC,EAAE;AAC7B,QAAA,IAAI,CAACuV,WAAW,CAACvV,IAAI,CAAC;AACxB,MAAA;AACF,IAAA;AACF,EAAA;;AAEA;EACA,OAAOoW,eAAeA,CAAC1hB,MAAM,EAAE;AAC7B,IAAA,OAAO,IAAI,CAAC2hB,IAAI,CAAC,YAAY;MAC3B,MAAMxd,IAAI,GAAGwb,QAAQ,CAAC/d,mBAAmB,CAAC,IAAI,EAAE5B,MAAM,CAAC;AAEvD,MAAA,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,OAAOmE,IAAI,CAACnE,MAAM,CAAC,KAAK,WAAW,EAAE;AACvC,QAAA,MAAM,IAAIY,SAAS,CAAC,CAAA,iBAAA,EAAoBZ,MAAM,GAAG,CAAC;AACpD,MAAA;AAEAmE,MAAAA,IAAI,CAACnE,MAAM,CAAC,EAAE;AAChB,IAAA,CAAC,CAAC;AACJ,EAAA;AACF;;AAEA;AACA;AACA;;AAEAxK,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;EACrFA,KAAK,CAACyO,cAAc,EAAE;EACtB8b,QAAQ,CAAC/d,mBAAmB,CAAC,IAAI,CAAC,CAACwD,MAAM,EAAE;AAC7C,CAAC,CAAC;AAEF5P,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,kBAAkB,EAAE,MAAM;EAClD,KAAK,MAAMsJ,MAAM,IAAI/C,cAAc,CAAC7L,IAAI,CAACyO,sBAAoB,CAAC,EAAE;AAC9D0a,IAAAA,QAAQ,CAAC/d,mBAAmB,CAACwD,MAAM,CAAC;AACtC,EAAA;AACF,CAAC,CAAC;;ACrcF;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,YAAY,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,IAAI,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+DAA+D,CAAC,CAAC,OAAO,CAAC,8FAA8F,CAAC,SAAS,CAAC,wIAAwI,CAAC,aAAa,CAAC,yDAAyD,CAAC,oBAAoB,CAAC,qJAAqJ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,kBAAkB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,IAAE,GAAG,CAAC,CAAC,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,qBAAqB,EAAE,CAAC,OAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,OAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAE,CAAC,MAAM,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,gDAAgD,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,gIAAgI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,4DAA4D,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,4IAA4I,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,oGAAoG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gDAAgD,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,oFAAoF,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,uDAAuD,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,2CAA2C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,kIAAkI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,wEAAwE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,4MAA4M,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,+HAA+H,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iEAAiE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,gDAAgD,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,gCAAgC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,iCAAiC,EAAE,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,kCAAkC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,iCAAiC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,8BAA8B,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,GAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,KAAE,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAE,CAAC,KAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAM,CAAC,EAAE,EAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,oBAAoB,CAAC,GAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,IAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAE,CAAC,EAAE,EAAC,CAAC,CAAC,8BAA8B,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,2CAA2C,CAAC,qBAAqB,CAAC,kCAAkC,CAAC,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,iBAAiB,GAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,IAAE,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,OAAM,MAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,qCAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,IAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,IAAE,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAM,MAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,OAAM,MAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,uCAAuC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,4BAA4B,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,4BAA4B,CAAC,WAAW,CAAC,8BAA8B,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS;;ACDt05D;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMvF,MAAI,GAAG,YAAY;AACzB,MAAMuB,UAAQ,GAAG,eAAe;AAChC,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMia,cAAY,GAAG,CAAA,MAAA,EAAS1d,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAMoP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAC/D,MAAM6c,sBAAsB,GAAG,CAAA,OAAA,EAAUtgB,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAEnE,MAAME,sBAAoB,GAAG,+BAA+B;AAE5D,MAAM4c,UAAU,GAAG,GAAG,CAAA;;AAEtB,MAAMliB,SAAO,GAAG;AACdmiB,EAAAA,eAAe,EAAE,IAAI;AAAE;AACvBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,UAAU,EAAE,IAAI;AAAE;AAClBC,EAAAA,cAAc,EAAE,IAAI;AAAE;AACtBC,EAAAA,kBAAkB,EAAE,CAAC;AAAE;AACvBC,EAAAA,YAAY,EAAE,CAAC;AAAE;AACjBC,EAAAA,MAAM,EAAE,KAAK;AAAE;AACfC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,eAAe,EAAE,IAAI;AAAE;AACvBC,EAAAA,aAAa,EAAE,EAAE;AACjBC,EAAAA,aAAa,EAAE,QAAQ;AAAE;AACzB1O,EAAAA,SAAS,EAAE,MAAM;AAAE;EACnB2O,UAAU,EAAE,EAAE;AAChB,CAAC;AAED,MAAM9iB,aAAW,GAAG;AAClBkiB,EAAAA,eAAe,EAAE,eAAe;AAChCC,EAAAA,OAAO,EAAE,6BAA6B;AACtCC,EAAAA,OAAO,EAAE,6BAA6B;AACtCC,EAAAA,UAAU,EAAE,wBAAwB;AACpCC,EAAAA,cAAc,EAAE,+BAA+B;AAC/CC,EAAAA,kBAAkB,EAAE,QAAQ;AAC5BC,EAAAA,YAAY,EAAE,QAAQ;AACtBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,eAAe,EAAE,uBAAuB;AACxCC,EAAAA,aAAa,EAAE,OAAO;AACtBC,EAAAA,aAAa,EAAE,QAAQ;AACvB1O,EAAAA,SAAS,EAAE,QAAQ;AACnB2O,EAAAA,UAAU,EAAE;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,UAAU,SAAS5hB,aAAa,CAAC;AACrCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAAC4iB,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC9Q,QAAQ,GAAG,KAAK;IAErB,IAAI,CAAC+Q,aAAa,EAAE;AACtB,EAAA;;AAEA;EACA,WAAWljB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAACnE,OAAO,CAACohB,MAAM,EAAE;AACvB,MAAA,OAAM;AACR,IAAA;AAEA,IAAA,OAAO,IAAI,CAACvQ,QAAQ,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AAClD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,IAAI,CAAC/Q,OAAO,CAACohB,MAAM,EAAE;AACvB,MAAA,OAAM;AACR,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACO,SAAS,IAAIxlB,UAAU,CAAC,IAAI,CAAC4D,QAAQ,CAAC,IAAI,IAAI,CAAC8Q,QAAQ,EAAE;AACjE,MAAA;AACF,IAAA;IAEA,MAAMiG,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,YAAU,CAAC;IACjE,IAAIuH,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC+d,SAAS,CAAC5Q,IAAI,EAAE;IACrB,IAAI,CAACF,QAAQ,GAAG,IAAI;IAEpBtc,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,aAAW,CAAC;AAClD,EAAA;AAEAsB,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,IAAI,CAAC9Q,OAAO,CAACohB,MAAM,EAAE;AACvB,MAAA,OAAM;AACR,IAAA;IAEA,IAAI,CAAC,IAAI,CAACO,SAAS,IAAI,CAAC,IAAI,CAAC9Q,QAAQ,EAAE;AACrC,MAAA;AACF,IAAA;IAEA,MAAM+G,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,YAAU,CAAC;IACjE,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC+d,SAAS,CAAC7Q,IAAI,EAAE;IACrB,IAAI,CAACD,QAAQ,GAAG,KAAK;IAErBtc,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,cAAY,CAAC;AACnD,EAAA;AAEAtP,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAACyhB,cAAc,EAAE;AACvB,MAAA,IAAI,CAACA,cAAc,CAACpY,UAAU,EAAE;MAChC,IAAI,CAACoY,cAAc,GAAG,IAAI;AAC5B,IAAA;IAEA,IAAI,IAAI,CAACF,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACG,OAAO,EAAE;AAC1B,IAAA;IAEA,IAAI,CAACH,SAAS,GAAG,IAAI;IACrB,KAAK,CAACvhB,OAAO,EAAE;AACjB,EAAA;AAEA2hB,EAAAA,gBAAgBA,GAAG;IACjB,MAAMC,KAAK,GAAG,IAAI,CAACL,SAAS,EAAEM,OAAO,EAAEV,aAAa;AACpD,IAAA,OAAOS,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAC,GAAG,EAAE;AAChC,EAAA;EAEAE,gBAAgBA,CAACF,KAAK,EAAE;IACtB,IAAI,IAAI,CAACL,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACzvB,GAAG,CAAC;AAAEqvB,QAAAA,aAAa,EAAES;AAAM,OAAC,CAAC;AAC9C,IAAA;AACF,EAAA;;AAEA;AACAJ,EAAAA,aAAaA,GAAG;IACd,IAAI,CAACO,QAAQ,GAAG,IAAI,CAACpiB,QAAQ,CAAC4C,OAAO,KAAK,OAAO;AACjD,IAAA,IAAI,CAACyf,SAAS,GAAG,IAAI,CAACpiB,OAAO,CAACohB,MAAM;;AAEpC;IACA,IAAI,IAAI,CAACgB,SAAS,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;MACpC,IAAI,CAACE,WAAW,GAAG,IAAI,CAACtiB,QAAQ,CAACpE,aAAa,CAAC,mCAAmC,CAAC;AACrF,IAAA;AAEA,IAAA,IAAI,CAAC2mB,gBAAgB,GAAG,IAAI,CAACC,uBAAuB,EAAE;AACtD,IAAA,IAAI,CAACC,eAAe,GAAG,IAAI,CAACC,sBAAsB,EAAE;AAEpD,IAAA,MAAMC,eAAe,GAAG,IAAI,CAACC,qBAAqB,EAAE;;AAEpD;AACA;IACA,IAAI,CAAChB,SAAS,GAAG,IAAIiB,QAAQ,CAAC,IAAI,CAACN,gBAAgB,EAAEI,eAAe,CAAC;AACrE,IAAA,IAAI,CAACf,SAAS,CAACkB,IAAI,EAAE;;AAErB;IACA,IAAI,CAACC,mBAAmB,EAAE;;AAE1B;IACA,IAAI,IAAI,CAACX,QAAQ,IAAI,IAAI,CAACpiB,QAAQ,CAAC/M,KAAK,EAAE;MACxC,IAAI,CAAC+vB,gBAAgB,EAAE;AACzB,IAAA;;AAEA;IACA,IAAI,CAACC,+BAA+B,EAAE;AACxC,EAAA;AAEAA,EAAAA,+BAA+BA,GAAG;IAChC,MAAM;AAAEzB,MAAAA;KAAe,GAAG,IAAI,CAACvhB,OAAO;IACtC,IAAI,CAACuhB,aAAa,IAAIA,aAAa,CAAClqB,MAAM,KAAK,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM4rB,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC3B,aAAa,CAAC;IAE7D,IAAI,IAAI,CAACY,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACpiB,QAAQ,CAAC/M,KAAK,GAAGiwB,aAAa;AACrC,IAAA;IAEA,IAAI,IAAI,CAACZ,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACrvB,KAAK,GAAGuuB,aAAa,CAACpgB,IAAI,CAAC,GAAG,CAAC;AAClD,IAAA;IAEA,IAAI,IAAI,CAACqhB,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAACtC,WAAW,GAAG+C,aAAa;AAClD,IAAA;AACF,EAAA;AAEAV,EAAAA,uBAAuBA,GAAG;IACxB,IAAI;AAAEjB,MAAAA;KAAiB,GAAG,IAAI,CAACthB,OAAO;AAEtC,IAAA,IAAI,OAAOshB,eAAe,KAAK,QAAQ,EAAE;AACvCA,MAAAA,eAAe,GAAGzmB,QAAQ,CAACc,aAAa,CAAC2lB,eAAe,CAAC;AAC3D,IAAA;;AAEA;IACA,IAAI,CAACA,eAAe,IAAI,IAAI,CAACa,QAAQ,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE;MACxD,MAAMjS,MAAM,GAAG,IAAI,CAACpQ,QAAQ,CAAC9D,OAAO,CAAC,aAAa,CAAC;AACnD,MAAA,IAAIkU,MAAM,EAAE;AACVmR,QAAAA,eAAe,GAAGnR,MAAM;AAC1B,MAAA;AACF,IAAA;AAEA,IAAA,OAAOmR,eAAe,IAAI,IAAI,CAACvhB,QAAQ;AACzC,EAAA;AAEA0iB,EAAAA,sBAAsBA,GAAG;IACvB,MAAM;AAAExB,MAAAA;KAAgB,GAAG,IAAI,CAACjhB,OAAO;AAEvC,IAAA,IAAI,OAAOihB,cAAc,KAAK,QAAQ,EAAE;AACtC,MAAA,OAAOpmB,QAAQ,CAACc,aAAa,CAACslB,cAAc,CAAC;AAC/C,IAAA;;AAEA;AACA,IAAA,IAAIA,cAAc,KAAK,IAAI,IAAKA,cAAc,KAAK,IAAI,IAAI,CAAC,IAAI,CAACkB,QAAQ,IAAI,CAAC,IAAI,CAACC,SAAU,EAAE;MAC7F,MAAMe,YAAY,GAAG,IAAI,CAACpjB,QAAQ,CAACpE,aAAa,CAAC,8BAA8B,CAAC;AAChF,MAAA,OAAOwnB,YAAY,IAAI,IAAI,CAACpjB,QAAQ;AACtC,IAAA;AAEA,IAAA,OAAOkhB,cAAc;AACvB,EAAA;AAEAmC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACrjB,QAAQ,CAAC9D,OAAO,CAAC,iBAAiB,CAAC;AACjD,EAAA;AAEAonB,EAAAA,kBAAkBA,GAAG;AACnB;IACA,MAAM;AAAExC,MAAAA;KAAiB,GAAG,IAAI,CAAC7gB,OAAO;AACxC,IAAA,IAAI6gB,eAAe,EAAE;AACnB,MAAA,OAAOA,eAAe;AACxB,IAAA;AAEA,IAAA,MAAMlf,QAAQ,GAAG,IAAI,CAACyhB,iBAAiB,EAAE;AACzC,IAAA,OAAOzhB,QAAQ,EAAEjI,YAAY,CAAC,eAAe,CAAC,IAAI,IAAI;AACxD,EAAA;EAEA4pB,mBAAmBA,CAACnxB,OAAO,EAAE;IAC3B,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,MAAMoxB,KAAK,GAAG,IAAI,CAACF,kBAAkB,EAAE;AAEvC,IAAA,IAAIE,KAAK,EAAE;AACT;AACApxB,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAEwqB,KAAK,CAAC;AAC9C,IAAA,CAAC,MAAM;AACL;AACApxB,MAAAA,OAAO,CAAC8G,eAAe,CAAC,eAAe,CAAC;AAC1C,IAAA;AACF,EAAA;AAEA6pB,EAAAA,mBAAmBA,GAAG;AACpB;AACA,IAAA,MAAMnhB,QAAQ,GAAG,IAAI,CAACyhB,iBAAiB,EAAE;IACzC,IAAI,CAACzhB,QAAQ,IAAI,IAAI,CAAC3B,OAAO,CAAC6gB,eAAe,EAAE;AAC7C;AACA,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACgB,cAAc,GAAG,IAAI2B,gBAAgB,CAAC,MAAM;MAC/C,IAAI,CAACF,mBAAmB,CAAC,IAAI,CAAC3B,SAAS,EAAEM,OAAO,EAAEwB,WAAW,CAAC;AAChE,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,CAAC5B,cAAc,CAACvX,OAAO,CAAC3I,QAAQ,EAAE;AACpCxI,MAAAA,UAAU,EAAE,IAAI;MAChBuqB,eAAe,EAAE,CAAC,eAAe;AACnC,KAAC,CAAC;AACJ,EAAA;AAEAf,EAAAA,qBAAqBA,GAAG;AACtB;AACA,IAAA,MAAMY,KAAK,GAAG,IAAI,CAACF,kBAAkB,EAAE;AACvC;IACA,MAAMM,QAAQ,GAAG,CAACJ,KAAK,IAAIA,KAAK,KAAK,MAAM,GAAG,QAAQ,GAAGA,KAAK;AAE9D,IAAA,MAAMb,eAAe,GAAG;AACtB,MAAA,GAAG,IAAI,CAAC1iB,OAAO,CAACyhB,UAAU;AAC1BmC,MAAAA,SAAS,EAAE,CAAC,IAAI,CAACxB,SAAS;AAC1ByB,MAAAA,eAAe,EAAE,IAAI,CAAC7jB,OAAO,CAAC8S,SAAS;AACvCqO,MAAAA,YAAY,EAAE,IAAI,CAACnhB,OAAO,CAACmhB,YAAY;AACvCE,MAAAA,MAAM,EAAE,IAAI,CAACrhB,OAAO,CAACqhB,MAAM;AAC3ByC,MAAAA,kBAAkB,EAAE,IAAI,CAAC9jB,OAAO,CAACwhB,aAAa;AAC9CD,MAAAA,aAAa,EAAE,IAAI,CAACvhB,OAAO,CAACuhB,aAAa;AACzCL,MAAAA,kBAAkB,EAAE,IAAI,CAAClhB,OAAO,CAACkhB,kBAAkB;MACnDzsB,IAAI,EAAE,IAAI,CAACuL,OAAO,CAACkhB,kBAAkB,GAAG,CAAC,GAAG,UAAU,GAAG,SAAS;AAClE6C,MAAAA,aAAa,EAAEJ,QAAQ;AACvBK,MAAAA,eAAe,EAAE,iBAAiB;AAClCC,MAAAA,WAAW,EAAEA,CAACC,IAAI,EAAE/vB,KAAK,KAAK,IAAI,CAACgwB,gBAAgB,CAACD,IAAI,EAAE/vB,KAAK,CAAC;MAChEiwB,MAAM,EAAEF,IAAI,IAAI;QACd,IAAI,CAACZ,mBAAmB,CAACY,IAAI,CAACjC,OAAO,CAACwB,WAAW,CAAC;MACpD,CAAC;MACDY,MAAM,EAAEA,MAAM;QACZ,IAAI,CAACxT,QAAQ,GAAG,IAAI;QACpB,IAAI,CAACyS,mBAAmB,CAAC,IAAI,CAAC3B,SAAS,CAACM,OAAO,CAACwB,WAAW,CAAC;MAC9D,CAAC;MACDa,MAAM,EAAEA,MAAM;QACZ,IAAI,CAACzT,QAAQ,GAAG,KAAK;AACvB,MAAA;KACD;;AAED;IACA,IAAI,IAAI,CAAC7Q,OAAO,CAACuhB,aAAa,CAAClqB,MAAM,GAAG,CAAC,EAAE;AACzC,MAAA,MAAMktB,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAACxkB,OAAO,CAACuhB,aAAa,CAAC,CAAC,CAAC,CAAC;AAChEmB,MAAAA,eAAe,CAAC+B,aAAa,GAAGF,SAAS,CAACG,QAAQ,EAAE;AACpDhC,MAAAA,eAAe,CAACiC,YAAY,GAAGJ,SAAS,CAACK,WAAW,EAAE;AACxD,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC5kB,OAAO,CAAC8gB,OAAO,EAAE;AACxB4B,MAAAA,eAAe,CAAC5B,OAAO,GAAG,IAAI,CAAC9gB,OAAO,CAAC8gB,OAAO;AAChD,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC9gB,OAAO,CAAC+gB,OAAO,EAAE;AACxB2B,MAAAA,eAAe,CAAC3B,OAAO,GAAG,IAAI,CAAC/gB,OAAO,CAAC+gB,OAAO;AAChD,IAAA;AAEA,IAAA,OAAO2B,eAAe;AACxB,EAAA;AAEAyB,EAAAA,gBAAgBA,CAACD,IAAI,EAAE/vB,KAAK,EAAE;IAC5B,MAAMotB,aAAa,GAAG,CAAC,GAAG2C,IAAI,CAACjC,OAAO,CAACV,aAAa,CAAC;AAErD,IAAA,IAAIA,aAAa,CAAClqB,MAAM,GAAG,CAAC,EAAE;AAC5B,MAAA,MAAM4rB,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC3B,aAAa,CAAC;MAE7D,IAAI,IAAI,CAACY,QAAQ,EAAE;AACjB,QAAA,IAAI,CAACpiB,QAAQ,CAAC/M,KAAK,GAAGiwB,aAAa;AACrC,MAAA;MAEA,IAAI,IAAI,CAACZ,WAAW,EAAE;QACpB,IAAI,CAACA,WAAW,CAACrvB,KAAK,GAAGuuB,aAAa,CAACpgB,IAAI,CAAC,GAAG,CAAC;AAClD,MAAA;MAEA,IAAI,IAAI,CAACqhB,eAAe,EAAE;AACxB,QAAA,IAAI,CAACA,eAAe,CAACtC,WAAW,GAAG+C,aAAa;AAClD,MAAA;AACF,IAAA;IAEA1uB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEge,cAAY,EAAE;AAChDiE,MAAAA,KAAK,EAAET,aAAa;AACpBptB,MAAAA;AACF,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC0wB,wBAAwB,CAACtD,aAAa,CAAC;AAC9C,EAAA;EAEAsD,wBAAwBA,CAACtD,aAAa,EAAE;IACtC,IAAI,IAAI,CAACa,SAAS,EAAE;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM0C,UAAU,GACb,IAAI,CAAC9kB,OAAO,CAACwhB,aAAa,KAAK,QAAQ,IAAID,aAAa,CAAClqB,MAAM,GAAG,CAAC,IACnE,IAAI,CAAC2I,OAAO,CAACwhB,aAAa,KAAK,iBAAiB,IAAID,aAAa,CAAClqB,MAAM,IAAI,CAAE;AAEjF,IAAA,IAAIytB,UAAU,EAAE;MACdhnB,UAAU,CAAC,MAAM,IAAI,CAACgT,IAAI,EAAE,EAAE8P,UAAU,CAAC;AAC3C,IAAA;AACF,EAAA;EAEA4D,UAAUA,CAACO,OAAO,EAAE;AAClB,IAAA,MAAM,CAACC,IAAI,EAAEC,KAAK,EAAEC,GAAG,CAAC,GAAGH,OAAO,CAACzpB,KAAK,CAAC,GAAG,CAAC;IAC7C,OAAO,IAAIigB,IAAI,CAACyJ,IAAI,EAAEC,KAAK,GAAG,CAAC,EAAEC,GAAG,CAAC;AACvC,EAAA;EAEAC,WAAWA,CAACJ,OAAO,EAAE;AACnB,IAAA,MAAMK,IAAI,GAAG,IAAI,CAACZ,UAAU,CAACO,OAAO,CAAC;AACrC,IAAA,MAAM1D,MAAM,GAAG,IAAI,CAACrhB,OAAO,CAACqhB,MAAM,KAAK,SAAS,GAAG/mB,SAAS,GAAG,IAAI,CAAC0F,OAAO,CAACqhB,MAAM;IAClF,MAAM;AAAEL,MAAAA;KAAY,GAAG,IAAI,CAAChhB,OAAO;;AAEnC;AACA,IAAA,IAAI,OAAOghB,UAAU,KAAK,UAAU,EAAE;AACpC,MAAA,OAAOA,UAAU,CAACoE,IAAI,EAAE/D,MAAM,CAAC;AACjC,IAAA;;AAEA;AACA,IAAA,IAAIL,UAAU,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;AAChD,MAAA,OAAO,IAAIqE,IAAI,CAACC,cAAc,CAACjE,MAAM,EAAEL,UAAU,CAAC,CAACuE,MAAM,CAACH,IAAI,CAAC;AACjE,IAAA;;AAEA;AACA,IAAA,OAAOA,IAAI,CAACI,kBAAkB,CAACnE,MAAM,CAAC;AACxC,EAAA;EAEA6B,mBAAmBA,CAAClB,KAAK,EAAE;AACzB,IAAA,IAAIA,KAAK,CAAC3qB,MAAM,KAAK,CAAC,EAAE;AACtB,MAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,IAAI2qB,KAAK,CAAC3qB,MAAM,KAAK,CAAC,EAAE;MACtB,OAAO,IAAI,CAAC8tB,WAAW,CAACnD,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAA;;AAEA;AACA,IAAA,MAAMyD,SAAS,GAAG,IAAI,CAACzlB,OAAO,CAACwhB,aAAa,KAAK,iBAAiB,GAAG,KAAK,GAAG,IAAI;AACjF,IAAA,OAAOQ,KAAK,CAAC/gB,GAAG,CAACykB,CAAC,IAAI,IAAI,CAACP,WAAW,CAACO,CAAC,CAAC,CAAC,CAACvkB,IAAI,CAACskB,SAAS,CAAC;AAC5D,EAAA;AAEA1C,EAAAA,gBAAgBA,GAAG;AACjB;IACA,MAAM/vB,KAAK,GAAG,IAAI,CAAC+M,QAAQ,CAAC/M,KAAK,CAACgO,IAAI,EAAE;IACxC,IAAI,CAAChO,KAAK,EAAE;AACV,MAAA;AACF,IAAA;AAEA,IAAA,MAAMoyB,IAAI,GAAG,IAAI7J,IAAI,CAACvoB,KAAK,CAAC;IAC5B,IAAI,CAACqF,MAAM,CAACkW,KAAK,CAAC6W,IAAI,CAACO,OAAO,EAAE,CAAC,EAAE;AACjC,MAAA,MAAMX,IAAI,GAAGI,IAAI,CAACR,WAAW,EAAE;AAC/B,MAAA,MAAMK,KAAK,GAAGW,MAAM,CAACR,IAAI,CAACV,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAChY,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,MAAA,MAAMwY,GAAG,GAAGU,MAAM,CAACR,IAAI,CAACS,OAAO,EAAE,CAAC,CAACnZ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACnD,MAAMoZ,SAAS,GAAG,CAAA,EAAGd,IAAI,IAAIC,KAAK,CAAA,CAAA,EAAIC,GAAG,CAAA,CAAE;AAC3C,MAAA,IAAI,CAACvD,SAAS,CAACzvB,GAAG,CAAC;QAAEqvB,aAAa,EAAE,CAACuE,SAAS;AAAE,OAAC,CAAC;AACpD,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAvxB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF;AACA;AACA,EAAA,IAAI,IAAI,CAACwO,OAAO,KAAK,OAAO,IAAI,IAAI,CAACtJ,OAAO,CAAC0sB,QAAQ,KAAK,MAAM,EAAE;AAChE,IAAA;AACF,EAAA;EAEA5xB,KAAK,CAACyO,cAAc,EAAE;EACtB8e,UAAU,CAAC/gB,mBAAmB,CAAC,IAAI,CAAC,CAACwD,MAAM,EAAE;AAC/C,CAAC,CAAC;AAEF5P,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE8lB,sBAAsB,EAAE3c,sBAAoB,EAAE,YAAY;AAClF;AACA,EAAA,IAAI,IAAI,CAACrB,OAAO,KAAK,OAAO,EAAE;AAC5B,IAAA;AACF,EAAA;EAEA+e,UAAU,CAAC/gB,mBAAmB,CAAC,IAAI,CAAC,CAACoQ,IAAI,EAAE;AAC7C,CAAC,CAAC;;AAEF;AACAxc,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,CAAA,gBAAA,EAAmBwF,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE,EAAE,MAAM;EAC7E,KAAK,MAAM3R,OAAO,IAAI0I,QAAQ,CAAC/F,gBAAgB,CAAC,CAAA,EAAGkP,sBAAoB,CAAA,uBAAA,CAAyB,CAAC,EAAE;AACjG0d,IAAAA,UAAU,CAAC/gB,mBAAmB,CAACxO,OAAO,CAAC;AACzC,EAAA;AACF,CAAC,CAAC;;AC/dF;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAM6zB,eAAe,GAAG,aAAa;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,UAAU,SAASnmB,aAAa,CAAC;AACrCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACsR,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAAC6V,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,mBAAmB,EAAE;AAC5B,EAAA;;AAEA;EACA,WAAWvnB,IAAIA,GAAG;AAChB,IAAA,OAAO,YAAY;AACrB,EAAA;;AAEA;;EAEAuF,MAAMA,CAACnO,aAAa,EAAE;AACpB,IAAA,OAAO,IAAI,CAAC+J,QAAQ,CAACqmB,IAAI,GAAG,IAAI,CAACtV,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,CAAC/a,aAAa,CAAC;AACpE,EAAA;EAEA+a,IAAIA,CAAC/a,aAAa,EAAE;IAClB,IAAI,IAAI,CAAC+J,QAAQ,CAACqmB,IAAI,IAAI,IAAI,CAAC/V,gBAAgB,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,MAAMyG,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CACpC,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,MAAM,CAAC,EAClC;AAAE5K,MAAAA;AAAc,KAClB,CAAC;IAED,IAAI8gB,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACyM,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACgW,aAAa,EAAE;IAEpB,MAAM;MAAEC,KAAK;AAAEC,MAAAA;AAAkB,KAAC,GAAG,IAAI,CAACC,eAAe,EAAE;IAC3D,IAAI,CAACC,YAAY,CAAC;MAAEH,KAAK;AAAEC,MAAAA;AAAkB,KAAC,CAAC;IAE/C,IAAI,CAAC/lB,cAAc,CAAC,MAAM;MACxB,IAAI,CAAC6P,gBAAgB,GAAG,KAAK;AAC7B9b,MAAAA,YAAY,CAACkD,OAAO,CAClB,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,OAAO,CAAC,EACnC;AAAE5K,QAAAA;AAAc,OAClB,CAAC;IACH,CAAC,EAAE,IAAI,CAAC+J,QAAQ,EAAE,IAAI,CAAC2mB,WAAW,EAAE,CAAC;AACvC,EAAA;AAEA5V,EAAAA,IAAIA,GAAG;IACL,IAAI,CAAC,IAAI,CAAC/Q,QAAQ,CAACqmB,IAAI,IAAI,IAAI,CAAC/V,gBAAgB,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuH,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CACpC,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,MAAM,CACnC,CAAC;IAED,IAAIgX,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACyM,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACsW,YAAY,EAAE;IAEnB,IAAI,CAACnmB,cAAc,CAAC,MAAM;AACxB;AACA;AACA;AACA,MAAA,IAAI,IAAI,CAACT,QAAQ,CAACqmB,IAAI,EAAE;QACtB,IAAI,CAACQ,gBAAgB,EAAE;AACzB,MAAA;MAEA,IAAI,CAAC7mB,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC,QAAQ,CAAC;MACxC,IAAI,CAAC4zB,YAAY,EAAE;MACnB,IAAI,CAACxW,gBAAgB,GAAG,KAAK;AAC7B9b,MAAAA,YAAY,CAACkD,OAAO,CAClB,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,QAAQ,CACrC,CAAC;IACH,CAAC,EAAE,IAAI,CAACb,QAAQ,EAAE,IAAI,CAAC2mB,WAAW,EAAE,CAAC;AACvC,EAAA;;AAEA;;AAEAF,EAAAA,eAAeA,GAAG;IAChB,OAAO;AAAEF,MAAAA,KAAK,EAAE,IAAI;AAAEC,MAAAA,iBAAiB,EAAE;KAAM;AACjD,EAAA;AAEAF,EAAAA,aAAaA,GAAG;AACd;AAAA,EAAA;AAGFQ,EAAAA,YAAYA,GAAG;AACb;AAAA,EAAA;AAGFH,EAAAA,WAAWA,GAAG;AACZ,IAAA,OAAO,CAAC,IAAI,CAAC3mB,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAAC,IAAI,CAAC6wB,oBAAoB,EAAE,CAAC;AACvE,EAAA;AAEAA,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO,gBAAgB;AACzB,EAAA;AAEAC,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,OAAO,eAAe;AACxB,EAAA;AAEAC,EAAAA,SAASA,GAAG;AACV;AAAA,EAAA;;AAGF;;AAEAP,EAAAA,YAAYA,CAAC;AAAEH,IAAAA,KAAK,GAAG,IAAI;AAAEC,IAAAA,iBAAiB,GAAG;GAAM,GAAG,EAAE,EAAE;IAC5D,IAAI,CAACL,cAAc,GAAGI,KAAK;AAE3B,IAAA,IAAIA,KAAK,EAAE;AACT,MAAA,IAAI,CAACvmB,QAAQ,CAACknB,SAAS,EAAE;AAC3B,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAAClnB,QAAQ,CAACgR,IAAI,EAAE;AACtB,IAAA;AAEA,IAAA,IAAIwV,iBAAiB,EAAE;MACrB1rB,QAAQ,CAACoc,IAAI,CAAC3a,SAAS,CAACiM,GAAG,CAACyd,eAAe,CAAC;AAC9C,IAAA;AACF,EAAA;AAEAW,EAAAA,YAAYA,GAAG;IACb,IAAI,CAACO,oBAAoB,EAAE;;AAE3B;AACA;AACA;IACA,IAAI,CAACnnB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC,QAAQ,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,IAAI,CAAC4e,iBAAiB,EAAE,EAAE;MAC7B,IAAI,CAACP,gBAAgB,EAAE;AACzB,IAAA;AACF,EAAA;;AAEA;AACA;AACAA,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,IAAI,CAAC7mB,QAAQ,CAAC2D,KAAK,EAAE;IACrB,IAAI,CAACwiB,cAAc,GAAG,KAAK;;AAE3B;AACA,IAAA,IAAI,CAACrrB,QAAQ,CAACc,aAAa,CAAC,oBAAoB,CAAC,EAAE;MACjDd,QAAQ,CAACoc,IAAI,CAAC3a,SAAS,CAACrJ,MAAM,CAAC+yB,eAAe,CAAC;AACjD,IAAA;AACF,EAAA;;AAEA;AACA;AACA;AACAmB,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,KAAK;AACd,EAAA;AAEAC,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,MAAMC,kBAAkB,GAAG9yB,YAAY,CAACkD,OAAO,CAC7C,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,eAAe,CAC5C,CAAC;IAED,IAAIymB,kBAAkB,CAACzjB,gBAAgB,EAAE;AACvC,MAAA;AACF,IAAA;AAEA,IAAA,MAAM0jB,WAAW,GAAG,IAAI,CAACP,mBAAmB,EAAE;IAC9C,IAAI,CAAChnB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC+e,WAAW,CAAC;IACxC,IAAI,CAAC9mB,cAAc,CAAC,MAAM;MACxB,IAAI,CAACT,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACq0B,WAAW,CAAC;AAC7C,IAAA,CAAC,EAAE,IAAI,CAACvnB,QAAQ,CAAC;AACnB,EAAA;;AAEA;AACA;AACA;AACAmnB,EAAAA,oBAAoBA,GAAG;IACrB,MAAMtyB,QAAQ,GAAG,wDAAwD;AAEzE,IAAA,KAAK,MAAMuN,EAAE,IAAIf,cAAc,CAAC7L,IAAI,CAACX,QAAQ,EAAE,IAAI,CAACmL,QAAQ,CAAC,EAAE;AAC7D,MAAA,MAAM1N,QAAQ,GAAG6N,IAAI,CAACrN,MAAM,CAACsP,EAAE,CAAC;MAChC,IAAI9P,QAAQ,IAAI,OAAOA,QAAQ,CAACye,IAAI,KAAK,UAAU,EAAE;QACnDze,QAAQ,CAACye,IAAI,EAAE;AACjB,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,KAAK,MAAM3O,EAAE,IAAIf,cAAc,CAAC7L,IAAI,CAAC,aAAa,EAAE,IAAI,CAACwK,QAAQ,CAAC,EAAE;AAClE,MAAA,MAAM1N,QAAQ,GAAG6N,IAAI,CAACrN,MAAM,CAACsP,EAAE,CAAC;MAChC,IAAI9P,QAAQ,IAAI,OAAOA,QAAQ,CAACye,IAAI,KAAK,UAAU,EAAE;QACnDze,QAAQ,CAACye,IAAI,EAAE;AACjB,MAAA;AACF,IAAA;AACF,EAAA;;AAEA;;AAEAqV,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,MAAMoB,QAAQ,GAAG,IAAI,CAACnoB,WAAW,CAACiB,SAAS;;AAE3C;IACA9L,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,QAAQ,EAAE5L,KAAK,IAAI;MAChDA,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,IAAI,CAAC,IAAI,CAAC5C,OAAO,CAAC0G,QAAQ,EAAE;QAC1B,IAAI,CAAC0gB,0BAA0B,EAAE;AACjC,QAAA;AACF,MAAA;MAEA,IAAI,CAACJ,SAAS,EAAE;MAChB,IAAI,CAAClW,IAAI,EAAE;AACb,IAAA,CAAC,CAAC;;AAEF;AACAvc,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,CAAA,OAAA,EAAUwnB,QAAQ,CAAA,CAAE,EAAEpzB,KAAK,IAAI;MAC5D,IAAIA,KAAK,CAAC/B,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC8zB,cAAc,EAAE;AACjD,QAAA;AACF,MAAA;MAEA/xB,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,IAAI,CAAC,IAAI,CAAC5C,OAAO,CAAC0G,QAAQ,EAAE;AAC1B,QAAA;AACF,MAAA;MAEA,IAAI,CAACsgB,SAAS,EAAE;MAChB,IAAI,CAAClW,IAAI,EAAE;AACb,IAAA,CAAC,CAAC;;AAEF;AACAvc,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,CAAA,KAAA,EAAQwnB,QAAQ,CAAA,CAAE,EAAEpzB,KAAK,IAAI;AAC1D,MAAA,IAAIA,KAAK,CAACY,MAAM,KAAK,IAAI,CAACgL,QAAQ,IAAI,CAAC,IAAI,CAACmmB,cAAc,EAAE;AAC1D,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,IAAI,CAAClmB,OAAO,CAACwnB,QAAQ,KAAK,QAAQ,EAAE;QACtC,IAAI,CAACJ,0BAA0B,EAAE;AACjC,QAAA;AACF,MAAA;MAEA,IAAI,CAACtW,IAAI,EAAE;AACb,IAAA,CAAC,CAAC;AACJ,EAAA;AACF;;ACjSA;AACA;AACA;AACA;AACA;AACA;;;AASA;AACA;AACA;;AAEA,MAAMlS,MAAI,GAAG,QAAQ;AACrB,MAAMuB,UAAQ,GAAG,WAAW;AAC5B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMyL,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMonB,YAAY,GAAG,CAAA,MAAA,EAASpnB,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAM4jB,mBAAmB,GAAG,iBAAiB;AAC7C,MAAMC,kBAAkB,GAAG,gBAAgB;AAC3C,MAAMC,kBAAkB,GAAG,gBAAgB;AAE3C,MAAM5jB,sBAAoB,GAAG,2BAA2B;AAExD,MAAMtF,SAAO,GAAG;AACd8oB,EAAAA,QAAQ,EAAE,IAAI;AACd9gB,EAAAA,QAAQ,EAAE,IAAI;AACd4f,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAM3nB,aAAW,GAAG;AAClB6oB,EAAAA,QAAQ,EAAE,kBAAkB;AAC5B9gB,EAAAA,QAAQ,EAAE,SAAS;AACnB4f,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;;AAEA,MAAMuB,MAAM,SAAS5B,UAAU,CAAC;AAC9B;EACA,WAAWvnB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAkpB,EAAAA,YAAYA,GAAG;AACb;AAAA,EAAA;;AAGF;;AAEAtB,EAAAA,eAAeA,GAAG;IAChB,OAAO;AACLF,MAAAA,KAAK,EAAE,IAAI,CAACtmB,OAAO,CAACsmB,KAAK;AACzBC,MAAAA,iBAAiB,EAAE,IAAI,CAACvmB,OAAO,CAACsmB;KACjC;AACH,EAAA;AAEAD,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,CAAC,IAAI,CAACrmB,OAAO,CAACsmB,KAAK,EAAE;MACvB,IAAI,CAACvmB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACmf,mBAAmB,CAAC;AAClD,IAAA;AACF,EAAA;AAEAb,EAAAA,YAAYA,GAAG;IACb,IAAI,CAAC9mB,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACy0B,mBAAmB,CAAC;AACrD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACAP,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACT,WAAW,EAAE;AAC3B,EAAA;AAEAM,EAAAA,SAASA,GAAG;IACVzyB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0nB,YAAY,CAAC;AACnD,EAAA;AACF;;AAEA;AACA;AACA;;AAEAlzB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAACtL,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;IACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;EAEArO,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAEwa,YAAU,EAAEuH,SAAS,IAAI;IAChD,IAAIA,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEArP,IAAAA,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAE2a,cAAY,EAAE,MAAM;AAC3C,MAAA,IAAI9T,SAAS,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAACwS,KAAK,EAAE;AACd,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,CAAC;;AAEF;AACA,EAAA,MAAMrP,MAAM,GAAGlG,WAAW,CAACK,iBAAiB,CAAC,IAAI,CAAC;;AAElD;AACA,EAAA,MAAM6uB,aAAa,GAAG,IAAI,CAAC9rB,OAAO,CAAC,cAAc,CAAC;AAClD,EAAA,MAAM+rB,UAAU,GAAGD,aAAa,IAAIA,aAAa,KAAKhzB,MAAM;AAE5D,EAAA,IAAIizB,UAAU,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACA,MAAMC,SAAS,GAAGJ,MAAM,CAAClnB,mBAAmB,CAAC5L,MAAM,EAAEgK,MAAM,CAAC;AAC5DhK,IAAAA,MAAM,CAACuH,SAAS,CAACiM,GAAG,CAACqf,kBAAkB,CAAC;AACxCK,IAAAA,SAAS,CAAClX,IAAI,CAAC,IAAI,CAAC;IACpBxc,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAE,CAAA,KAAA,EAAQsL,WAAS,CAAA,CAAE,EAAE,MAAM;AAClDtL,MAAAA,MAAM,CAACuH,SAAS,CAACrJ,MAAM,CAAC20B,kBAAkB,CAAC;AAC7C,IAAA,CAAC,CAAC;AAEF,IAAA,MAAMM,eAAe,GAAGL,MAAM,CAACnnB,WAAW,CAACqnB,aAAa,CAAC;AACzD,IAAA,IAAIG,eAAe,EAAE;AACnB;AACA;AACA;AACA;AACAH,MAAAA,aAAa,CAACzrB,SAAS,CAACiM,GAAG,CAACof,kBAAkB,CAAC;AAC/CpzB,MAAAA,YAAY,CAAC0C,GAAG,CAAC8wB,aAAa,EAAErY,cAAY,EAAE,MAAM;AAClDqY,QAAAA,aAAa,CAACzrB,SAAS,CAACrJ,MAAM,CAAC00B,kBAAkB,CAAC;AACpD,MAAA,CAAC,CAAC;MACFO,eAAe,CAACpX,IAAI,EAAE;AACxB,IAAA;AAEA,IAAA;AACF,EAAA;EAEA,MAAM5N,IAAI,GAAG2kB,MAAM,CAAClnB,mBAAmB,CAAC5L,MAAM,EAAEgK,MAAM,CAAC;AACvDmE,EAAAA,IAAI,CAACiB,MAAM,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF5B,oBAAoB,CAACslB,MAAM,CAAC;;AC/K5B;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMjpB,MAAI,GAAG,aAAa;AAC1B,MAAMuB,UAAQ,GAAG,gBAAgB;AACjC,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMgoB,YAAY,GAAG,CAAA,MAAA,EAAS9nB,WAAS,CAAA,CAAE;AACzC,MAAM+nB,cAAc,GAAG,CAAA,QAAA,EAAW/nB,WAAS,CAAA,CAAE;AAE7C,MAAMgoB,mBAAmB,GAAG,cAAc;AAC1C,MAAMC,wBAAwB,GAAG,mBAAmB;AACpD,MAAMC,iBAAiB,GAAG,QAAQ;AAElC,MAAMC,iBAAiB,GAAG,WAAW;AACrC,MAAMC,iBAAiB,GAAG,WAAW;AACrC,MAAMC,wBAAwB,GAAG,sBAAsB;AACvD,MAAMC,sBAAsB,GAAG,oBAAoB;AACnD,MAAMC,oBAAoB,GAAG,yBAAyB;AACtD,MAAMC,eAAe,GAAG,mBAAmB;AAE3C,MAAMnqB,SAAO,GAAG;AACdoqB,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,aAAa,EAAE,OAAO;AACtBC,EAAAA,aAAa,EAAE,YAAY;AAC3BC,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,QAAQ,EAAE,qPAAqP;EAC/P9e,SAAS,EAAE,CAAC;AACd,CAAC;AAED,MAAMzL,aAAW,GAAG;AAClBmqB,EAAAA,aAAa,EAAE,iBAAiB;AAChCC,EAAAA,aAAa,EAAE,QAAQ;AACvBC,EAAAA,aAAa,EAAE,QAAQ;AACvBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,QAAQ,EAAE,QAAQ;AAClB9e,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAM+e,WAAW,SAASrpB,aAAa,CAAC;AACtCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACqqB,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,cAAc,GAAG,CAAC;IACvB,IAAI,CAACC,cAAc,GAAG,KAAK;IAE3B,IAAI,CAACC,KAAK,EAAE;AACd,EAAA;;AAEA;EACA,WAAWjrB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA6Y,EAAAA,MAAMA,GAAG;IACP,IAAI,CAACmS,kBAAkB,EAAE;IACzBr1B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEooB,YAAY,CAAC;AACnD,EAAA;AAEA/nB,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAACopB,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAAC/f,UAAU,EAAE;AACnC,IAAA;;AAEA;IACA,IAAI,CAACogB,aAAa,EAAE;;AAEpB;IACA,IAAI,IAAI,CAACN,eAAe,IAAI,IAAI,CAACA,eAAe,CAACO,aAAa,EAAE;AAC9D,MAAA,IAAI,CAACP,eAAe,CAACO,aAAa,CAAC72B,MAAM,EAAE;AAC7C,IAAA;IAEA,KAAK,CAACmN,OAAO,EAAE;AACjB,EAAA;;AAEA;AACAupB,EAAAA,KAAKA,GAAG;AACN;IACA,IAAI,CAAC5pB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC8f,mBAAmB,CAAC;;AAEhD;AACA,IAAA,IAAI,CAACe,MAAM,GAAG,CAAC,GAAGhoB,cAAc,CAAC7L,IAAI,CAACizB,iBAAiB,EAAE,IAAI,CAACzoB,QAAQ,CAAC,CAAC;;AAExE;AACA,IAAA,KAAK,MAAM,CAAC1B,KAAK,EAAEgM,IAAI,CAAC,IAAI,IAAI,CAAC+e,MAAM,CAACtyB,OAAO,EAAE,EAAE;AACjDuT,MAAAA,IAAI,CAAChR,OAAO,CAAC0wB,UAAU,GAAG1rB,KAAK;AACjC,IAAA;;AAEA;AACA,IAAA,IAAI,CAACorB,cAAc,GAAG,IAAI,CAACO,qBAAqB,EAAE;;AAElD;IACA,IAAI,CAACC,mBAAmB,EAAE;;AAE1B;IACA,IAAI,CAACC,oBAAoB,EAAE;;AAE3B;IACA,IAAI,CAACN,kBAAkB,EAAE;IAEzB,IAAI,CAACF,cAAc,GAAG,IAAI;AAC5B,EAAA;AAEAO,EAAAA,mBAAmBA,GAAG;AACpB;AACA,IAAA,IAAI,CAACV,eAAe,GAAGnoB,cAAc,CAACE,OAAO,CAAConB,wBAAwB,EAAE,IAAI,CAAC3oB,QAAQ,CAAC;IAEtF,IAAI,IAAI,CAACwpB,eAAe,EAAE;AACxB,MAAA,IAAI,CAACD,aAAa,GAAGloB,cAAc,CAACE,OAAO,CAACqnB,sBAAsB,EAAE,IAAI,CAAC5oB,QAAQ,CAAC;AAClF,MAAA;AACF,IAAA;AAEA,IAAA,MAAMoqB,QAAQ,GAAG,IAAI,CAACC,YAAY,EAAE;AACpC,IAAA,MAAMC,QAAQ,GAAG,CAAA,gCAAA,EAAmCF,QAAQ,CAAA,OAAA,CAAS;IACrE,MAAMG,QAAQ,GAAG,CAAA,gCAAA,EAAmC,IAAI,CAACtqB,OAAO,CAACipB,QAAQ,CAAA,OAAA,CAAS;IAClF,MAAMsB,aAAa,GAAG,IAAI,CAACvqB,OAAO,CAAC+oB,aAAa,KAAK,KAAK,GACxD,GAAGuB,QAAQ,CAAA,EAAGD,QAAQ,CAAA,CAAE,GACxB,GAAGA,QAAQ,CAAA,EAAGC,QAAQ,CAAA,CAAE;AAE1B,IAAA,MAAME,YAAY,GAAG3vB,QAAQ,CAACwkB,aAAa,CAAC,IAAI,CAAC;IACjDmL,YAAY,CAACC,SAAS,GAAG,4BAA4B;IACrDD,YAAY,CAACE,SAAS,GAAG;AAC7B,0GAAA,EAA4G,IAAI,CAAC1qB,OAAO,CAACgpB,aAAa,CAAA;AACtI,QAAA,EAAUuB,aAAa;AACvB;AACA,kBAAA,EAAoBjC,wBAAwB,CAAA;AAC5C,IAAA,CAAK;AAED,IAAA,IAAI,CAACvoB,QAAQ,CAACsN,MAAM,CAACmd,YAAY,CAAC;IAClC,IAAI,CAACjB,eAAe,GAAGiB,YAAY,CAAC7uB,aAAa,CAAC+sB,wBAAwB,CAAC;IAC3E,IAAI,CAACY,aAAa,GAAGkB,YAAY,CAAC7uB,aAAa,CAACgtB,sBAAsB,CAAC;AACzE,EAAA;AAEAyB,EAAAA,YAAYA,GAAG;IACb,MAAMO,iBAAiB,GAAGvpB,cAAc,CAACE,OAAO,CAACsnB,oBAAoB,EAAE,IAAI,CAAC7oB,QAAQ,CAAC;IAErF,IAAI,CAAC4qB,iBAAiB,EAAE;AACtB,MAAA,OAAO,IAAI,CAAC3qB,OAAO,CAACkpB,QAAQ;AAC9B,IAAA;AAEA,IAAA,MAAM0B,SAAS,GAAGD,iBAAiB,CAACzd,SAAS,CAAC,IAAI,CAAC;AACnD0d,IAAAA,SAAS,CAAC3xB,eAAe,CAAC,uBAAuB,CAAC;AAClD,IAAA,MAAMkxB,QAAQ,GAAGS,SAAS,CAACC,SAAS;IAEpCF,iBAAiB,CAAC13B,MAAM,EAAE;AAE1B,IAAA,OAAOk3B,QAAQ;AACjB,EAAA;AAEAH,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,MAAMh3B,KAAK,GAAG,IAAI,CAACgN,OAAO,CAAC8oB,aAAa;AAExC,IAAA,IAAI,OAAO91B,KAAK,KAAK,QAAQ,EAAE;AAC7B,MAAA,OAAOA,KAAK;AACd,IAAA;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,EAAE,EAAE;AAC7C,MAAA,MAAM83B,QAAQ,GAAG5vB,gBAAgB,CAACL,QAAQ,CAAC6B,eAAe,CAAC,CACxDX,gBAAgB,CAAC,CAAA,gBAAA,EAAmB/I,KAAK,EAAE,CAAC;AAC/C,MAAA,OAAOqF,MAAM,CAAC+C,UAAU,CAAC0vB,QAAQ,CAAC,IAAI,CAAC;AACzC,IAAA;AAEA,IAAA,OAAO,CAAC;AACV,EAAA;AAEAZ,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,IAAI,OAAOa,cAAc,KAAK,WAAW,EAAE;AACzC;AACAx2B,MAAAA,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC6vB,kBAAkB,EAAE,CAAC;AAClE,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACJ,eAAe,GAAG,IAAIuB,cAAc,CAAC,MAAM;MAC9C,IAAI,CAACnB,kBAAkB,EAAE;AAC3B,IAAA,CAAC,CAAC;IAEF,IAAI,CAACJ,eAAe,CAAClf,OAAO,CAAC,IAAI,CAACvK,QAAQ,CAAC;AAC7C,EAAA;AAEA6pB,EAAAA,kBAAkBA,GAAG;AACnB;IACA,IAAI,CAACC,aAAa,EAAE;AAEpB,IAAA,MAAMmB,QAAQ,GAAG,IAAI,CAACjrB,QAAQ,CAACkrB,WAAW;IAC1C,MAAMT,YAAY,GAAG,IAAI,CAACjB,eAAe,EAAEttB,OAAO,CAAC,WAAW,CAAC;;AAE/D;IACA,IAAI,IAAI,CAACwtB,cAAc,GAAG,CAAC,IAAIuB,QAAQ,GAAG,IAAI,CAACvB,cAAc,EAAE;AAC7D,MAAA,MAAMyB,eAAe,GAAG,IAAI,CAAC9B,MAAM,CAAC9vB,MAAM,CACxC+Q,IAAI,IAAI,CAACA,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC4yB,eAAe,CAClD,CAAC;AAED,MAAA,IAAI,CAACsC,eAAe,CAACD,eAAe,CAAC;AAErC,MAAA,IAAIV,YAAY,EAAE;AAChB,QAAA,IAAIU,eAAe,CAAC7zB,MAAM,GAAG,CAAC,EAAE;AAC9BmzB,UAAAA,YAAY,CAACluB,SAAS,CAACrJ,MAAM,CAACs1B,iBAAiB,CAAC;AAClD,QAAA,CAAC,MAAM;AACLiC,UAAAA,YAAY,CAACluB,SAAS,CAACiM,GAAG,CAACggB,iBAAiB,CAAC;AAC/C,QAAA;AACF,MAAA;AAEA,MAAA,IAAI2C,eAAe,CAAC7zB,MAAM,GAAG,CAAC,EAAE;QAC9B9C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEqoB,cAAc,EAAE;UAClDgD,aAAa,EAAEF,eAAe,CAAC7zB,MAAM;UACrCipB,YAAY,EAAE,IAAI,CAAC8I,MAAM,CAAC/xB,MAAM,GAAG6zB,eAAe,CAAC7zB;AACrD,SAAC,CAAC;AACJ,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,MAAMg0B,aAAa,GAAGb,YAAY,EAAES,WAAW,IAAI,CAAC;;AAEpD;AACA;AACA,IAAA,MAAMK,SAAS,GAAG,IAAI,CAAClC,MAAM,CAC1B9vB,MAAM,CAAC+Q,IAAI,IAAIA,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC4yB,eAAe,CAAC,CAAC,CACxD0C,MAAM,CAAC,CAACC,GAAG,EAAEnhB,IAAI,KAAKmhB,GAAG,GAAGnhB,IAAI,CAAC4gB,WAAW,EAAE,CAAC,CAAC;IAEnD,IAAIQ,SAAS,GAAG,CAAC;IACjB,MAAMP,eAAe,GAAG,EAAE;IAC1B,MAAMQ,iBAAiB,GAAGV,QAAQ,GAAGK,aAAa,GAAGC,SAAS,GAAG,EAAE,CAAA;;AAEnE;AACA,IAAA,KAAK,MAAMjhB,IAAI,IAAI,IAAI,CAAC+e,MAAM,EAAE;AAC9B;MACA,IAAI/e,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC4yB,eAAe,CAAC,EAAE;AAC5C,QAAA;AACF,MAAA;MAEA4C,SAAS,IAAIphB,IAAI,CAAC4gB,WAAW;MAE7B,IAAIQ,SAAS,GAAGC,iBAAiB,EAAE;AACjCR,QAAAA,eAAe,CAACtpB,IAAI,CAACyI,IAAI,CAAC;AAC5B,MAAA;AACF,IAAA;;AAEA;IACA,MAAMiW,YAAY,GAAG,IAAI,CAAC8I,MAAM,CAAC/xB,MAAM,GAAG6zB,eAAe,CAAC7zB,MAAM;AAChE,IAAA,IAAIipB,YAAY,GAAG,IAAI,CAACtgB,OAAO,CAACoK,SAAS,IAAI,IAAI,CAACgf,MAAM,CAAC/xB,MAAM,GAAG,IAAI,CAAC2I,OAAO,CAACoK,SAAS,EAAE;AACxF;AACA,MAAA,MAAMuhB,MAAM,GAAG,IAAI,CAACvC,MAAM,CAAC7xB,KAAK,CAAC,IAAI,CAACyI,OAAO,CAACoK,SAAS,CAAC,CAAC9Q,MAAM,CAAC+Q,IAAI,IAAI,CAACA,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC4yB,eAAe,CAAC,CAAC;MAClHqC,eAAe,CAAC7zB,MAAM,GAAG,CAAC;AAC1B6zB,MAAAA,eAAe,CAACtpB,IAAI,CAAC,GAAG+pB,MAAM,CAAC;AACjC,IAAA;;AAEA;AACA,IAAA,IAAI,CAACR,eAAe,CAACD,eAAe,CAAC;;AAErC;AACA,IAAA,IAAIV,YAAY,EAAE;AAChB,MAAA,IAAIU,eAAe,CAAC7zB,MAAM,GAAG,CAAC,EAAE;AAC9BmzB,QAAAA,YAAY,CAACluB,SAAS,CAACrJ,MAAM,CAACs1B,iBAAiB,CAAC;AAClD,MAAA,CAAC,MAAM;AACLiC,QAAAA,YAAY,CAACluB,SAAS,CAACiM,GAAG,CAACggB,iBAAiB,CAAC;AAC/C,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI2C,eAAe,CAAC7zB,MAAM,GAAG,CAAC,EAAE;MAC9B9C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEqoB,cAAc,EAAE;QAClDgD,aAAa,EAAEF,eAAe,CAAC7zB,MAAM;QACrCipB,YAAY,EAAE,IAAI,CAAC8I,MAAM,CAAC/xB,MAAM,GAAG6zB,eAAe,CAAC7zB;AACrD,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEA8zB,eAAeA,CAAC3iB,KAAK,EAAE;AACrB,IAAA,IAAI,CAAC,IAAI,CAAC8gB,aAAa,EAAE;AACvB,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACA,aAAa,CAACoB,SAAS,GAAG,EAAE;IACjC,IAAI,CAACrB,cAAc,GAAG,EAAE;AAExB,IAAA,KAAK,MAAMhf,IAAI,IAAI7B,KAAK,EAAE;MACxB,MAAMojB,IAAI,GAAGxqB,cAAc,CAACE,OAAO,CAACmnB,iBAAiB,EAAEpe,IAAI,CAAC;MAC5D,IAAI,CAACuhB,IAAI,EAAE;AACT,QAAA;AACF,MAAA;AAEA,MAAA,MAAMC,UAAU,GAAGD,IAAI,CAAC1e,SAAS,CAAC,IAAI,CAAC;MACvC2e,UAAU,CAACpB,SAAS,GAAG,WAAW;MAElC,IAAImB,IAAI,CAACtvB,SAAS,CAACrG,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACrC41B,QAAAA,UAAU,CAACvvB,SAAS,CAACiM,GAAG,CAAC,QAAQ,CAAC;AACpC,MAAA;AAEA,MAAA,IAAIqjB,IAAI,CAACtvB,SAAS,CAACrG,QAAQ,CAAC,UAAU,CAAC,IAAI21B,IAAI,CAACpvB,YAAY,CAAC,UAAU,CAAC,EAAE;AACxEqvB,QAAAA,UAAU,CAACvvB,SAAS,CAACiM,GAAG,CAAC,UAAU,CAAC;AACtC,MAAA;AAEA,MAAA,IAAI,CAAC+gB,aAAa,CAACjc,MAAM,CAACwe,UAAU,CAAC;;AAErC;AACAxhB,MAAAA,IAAI,CAAC/N,SAAS,CAACiM,GAAG,CAACggB,iBAAiB,CAAC;AACrCle,MAAAA,IAAI,CAAChR,OAAO,CAACyyB,aAAa,GAAG,MAAM;AAEnC,MAAA,IAAI,CAACzC,cAAc,CAACznB,IAAI,CAACyI,IAAI,CAAC;AAChC,IAAA;AACF,EAAA;AAEAwf,EAAAA,aAAaA,GAAG;AACd,IAAA,KAAK,MAAMxf,IAAI,IAAI,IAAI,CAAC+e,MAAM,EAAE;AAC9B/e,MAAAA,IAAI,CAAC/N,SAAS,CAACrJ,MAAM,CAACs1B,iBAAiB,CAAC;AACxC,MAAA,OAAOle,IAAI,CAAChR,OAAO,CAACyyB,aAAa;AACnC,IAAA;IAEA,IAAI,IAAI,CAACxC,aAAa,EAAE;AACtB,MAAA,IAAI,CAACA,aAAa,CAACoB,SAAS,GAAG,EAAE;AACnC,IAAA;IAEA,IAAI,CAACrB,cAAc,GAAG,EAAE;AAC1B,EAAA;AACF;;AAEA;AACA;AACA;;AAEA90B,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,kBAAkB,EAAE,MAAM;EAClD,KAAK,MAAM1I,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC,iCAAiC,CAAC,EAAE;AAC5E4zB,IAAAA,WAAW,CAACxoB,mBAAmB,CAACxO,OAAO,CAAC;AAC1C,EAAA;AACF,CAAC,CAAC;;ACpWF;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,OAAO;AACpB,MAAMyB,WAAS,GAAG,WAAW;AAC7B,MAAM0rB,gBAAgB,GAAG,CAAA,UAAA,EAAa1rB,WAAS,CAAA,CAAE;AACjD,MAAM2rB,eAAe,GAAG,CAAA,SAAA,EAAY3rB,WAAS,CAAA,CAAE;AAC/C,MAAM4rB,cAAc,GAAG,CAAA,QAAA,EAAW5rB,WAAS,CAAA,CAAE;AAC7C,MAAMyE,iBAAiB,GAAG,CAAA,WAAA,EAAczE,WAAS,CAAA,CAAE;AACnD,MAAM6rB,eAAe,GAAG,CAAA,SAAA,EAAY7rB,WAAS,CAAA,CAAE;AAC/C,MAAM8rB,kBAAkB,GAAG,OAAO;AAClC,MAAMC,gBAAgB,GAAG,KAAK;AAC9B,MAAMC,wBAAwB,GAAG,eAAe;AAChD,MAAMC,eAAe,GAAG,EAAE;AAE1B,MAAM5tB,SAAO,GAAG;AACd6tB,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,YAAY,EAAE,IAAI;AAClBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,YAAY,EAAE;AAChB,CAAC;AAED,MAAMhuB,aAAW,GAAG;AAClB4tB,EAAAA,WAAW,EAAE,iBAAiB;AAC9BC,EAAAA,YAAY,EAAE,iBAAiB;AAC/BC,EAAAA,aAAa,EAAE,iBAAiB;AAChCC,EAAAA,UAAU,EAAE,iBAAiB;AAC7BC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,KAAK,SAASnuB,MAAM,CAAC;AACzBW,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,EAAE;IACP,IAAI,CAACgB,QAAQ,GAAG5N,OAAO;IAEvB,IAAI,CAACA,OAAO,IAAI,CAACy6B,KAAK,CAACC,WAAW,EAAE,EAAE;AACpC,MAAA;AACF,IAAA;IAEA,IAAI,CAAC7sB,OAAO,GAAG,IAAI,CAAClB,UAAU,CAACC,MAAM,CAAC;IACtC,IAAI,CAAC+tB,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,qBAAqB,GAAGv2B,OAAO,CAACsD,MAAM,CAACkzB,YAAY,CAAC;IACzD,IAAI,CAACC,WAAW,EAAE;AACpB,EAAA;;AAEA;EACA,WAAWxuB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAwB,EAAAA,OAAOA,GAAG;IACR7L,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuL,QAAQ,EAAEM,WAAS,CAAC;AAC5C,EAAA;;AAEA;EACA8sB,MAAMA,CAACh5B,KAAK,EAAE;AACZ,IAAA,IAAI,CAAC,IAAI,CAAC64B,qBAAqB,EAAE;MAC/B,IAAI,CAACF,OAAO,GAAG34B,KAAK,CAACi5B,OAAO,CAAC,CAAC,CAAC,CAAChS,OAAO;MACvC,IAAI,CAAC2R,OAAO,GAAG54B,KAAK,CAACi5B,OAAO,CAAC,CAAC,CAAC,CAAC/R,OAAO;AAEvC,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACgS,uBAAuB,CAACl5B,KAAK,CAAC,EAAE;AACvC,MAAA,IAAI,CAAC24B,OAAO,GAAG34B,KAAK,CAACinB,OAAO;AAC5B,MAAA,IAAI,CAAC2R,OAAO,GAAG54B,KAAK,CAACknB,OAAO;AAC9B,IAAA;AACF,EAAA;EAEAiS,IAAIA,CAACn5B,KAAK,EAAE;AACV,IAAA,IAAI,IAAI,CAACk5B,uBAAuB,CAACl5B,KAAK,CAAC,EAAE;MACvC,IAAI,CAAC24B,OAAO,GAAG34B,KAAK,CAACinB,OAAO,GAAG,IAAI,CAAC0R,OAAO;MAC3C,IAAI,CAACC,OAAO,GAAG54B,KAAK,CAACknB,OAAO,GAAG,IAAI,CAAC0R,OAAO;AAC7C,IAAA;IAEA,IAAI,CAACQ,YAAY,EAAE;AACnBnwB,IAAAA,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAACusB,WAAW,CAAC;AACnC,EAAA;EAEAiB,KAAKA,CAACr5B,KAAK,EAAE;IACX,IAAIA,KAAK,CAACi5B,OAAO,IAAIj5B,KAAK,CAACi5B,OAAO,CAAC/1B,MAAM,GAAG,CAAC,EAAE;MAC7C,IAAI,CAACy1B,OAAO,GAAG,CAAC;MAChB,IAAI,CAACC,OAAO,GAAG,CAAC;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACD,OAAO,GAAG34B,KAAK,CAACi5B,OAAO,CAAC,CAAC,CAAC,CAAChS,OAAO,GAAG,IAAI,CAAC0R,OAAO;AACtD,IAAA,IAAI,CAACC,OAAO,GAAG54B,KAAK,CAACi5B,OAAO,CAAC,CAAC,CAAC,CAAC/R,OAAO,GAAG,IAAI,CAAC0R,OAAO;AACxD,EAAA;AAEAQ,EAAAA,YAAYA,GAAG;IACb,MAAME,SAAS,GAAG/yB,IAAI,CAAC6Q,GAAG,CAAC,IAAI,CAACuhB,OAAO,CAAC;IACxC,MAAMY,SAAS,GAAGhzB,IAAI,CAAC6Q,GAAG,CAAC,IAAI,CAACwhB,OAAO,CAAC;;AAExC;AACA,IAAA,IAAIW,SAAS,GAAGD,SAAS,IAAIC,SAAS,GAAGpB,eAAe,EAAE;AACxD;MACA,MAAMnjB,SAAS,GAAG,IAAI,CAAC4jB,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;MAClD,IAAI,CAACD,OAAO,GAAG,CAAC;MAChB,IAAI,CAACC,OAAO,GAAG,CAAC;AAChB3vB,MAAAA,OAAO,CAAC+L,SAAS,KAAK,MAAM,GAAG,IAAI,CAACnJ,OAAO,CAAC2sB,YAAY,GAAG,IAAI,CAAC3sB,OAAO,CAAC0sB,UAAU,CAAC;AACnF,MAAA;AACF,IAAA;IAEA,IAAIe,SAAS,GAAGnB,eAAe,EAAE;AAC/B;AACA,MAAA,MAAMnjB,SAAS,GAAGskB,SAAS,GAAG,IAAI,CAACX,OAAO;MAC1C,IAAI,CAACA,OAAO,GAAG,CAAC;MAChB,IAAI,CAACC,OAAO,GAAG,CAAC;MAEhB,IAAI,CAAC5jB,SAAS,EAAE;AACd,QAAA;AACF,MAAA;AAEA/L,MAAAA,OAAO,CAAC+L,SAAS,GAAG,CAAC,GAAG,IAAI,CAACnJ,OAAO,CAACysB,aAAa,GAAG,IAAI,CAACzsB,OAAO,CAACwsB,YAAY,CAAC;AAC/E,MAAA;AACF,IAAA;IAEA,IAAI,CAACM,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,OAAO,GAAG,CAAC;AAClB,EAAA;AAEAG,EAAAA,WAAWA,GAAG;IACZ,IAAI,IAAI,CAACF,qBAAqB,EAAE;AAC9Bz4B,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE+E,iBAAiB,EAAE3Q,KAAK,IAAI,IAAI,CAACg5B,MAAM,CAACh5B,KAAK,CAAC,CAAC;AAC9EI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEmsB,eAAe,EAAE/3B,KAAK,IAAI,IAAI,CAACm5B,IAAI,CAACn5B,KAAK,CAAC,CAAC;MAE1E,IAAI,CAAC4L,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC8jB,wBAAwB,CAAC;AACvD,IAAA,CAAC,MAAM;AACL93B,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEgsB,gBAAgB,EAAE53B,KAAK,IAAI,IAAI,CAACg5B,MAAM,CAACh5B,KAAK,CAAC,CAAC;AAC7EI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEisB,eAAe,EAAE73B,KAAK,IAAI,IAAI,CAACq5B,KAAK,CAACr5B,KAAK,CAAC,CAAC;AAC3EI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEksB,cAAc,EAAE93B,KAAK,IAAI,IAAI,CAACm5B,IAAI,CAACn5B,KAAK,CAAC,CAAC;AAC3E,IAAA;AACF,EAAA;EAEAk5B,uBAAuBA,CAACl5B,KAAK,EAAE;AAC7B,IAAA,OAAO,IAAI,CAAC64B,qBAAqB,KAAK74B,KAAK,CAACw5B,WAAW,KAAKvB,gBAAgB,IAAIj4B,KAAK,CAACw5B,WAAW,KAAKxB,kBAAkB,CAAC;AAC3H,EAAA;;AAEA;EACA,OAAOU,WAAWA,GAAG;IACnB,OAAO,cAAc,IAAIhyB,QAAQ,CAAC6B,eAAe,IAAIkxB,SAAS,CAACC,cAAc,GAAG,CAAC;AACnF,EAAA;AACF;;AC1KA;AACA;AACA;AACA;AACA;AACA;;;AAaA;AACA;AACA;;AAEA,MAAMjvB,MAAI,GAAG,QAAQ;AACrB,MAAMuB,UAAQ,GAAG,WAAW;AAC5B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAChC,MAAMiB,qBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE7D,MAAM4L,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMytB,YAAY,GAAG,CAAA,MAAA,EAASztB,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAME,sBAAoB,GAAG,2BAA2B;AAExD,MAAMtF,SAAO,GAAG;AACd8oB,EAAAA,QAAQ,EAAE,IAAI;AACd9gB,EAAAA,QAAQ,EAAE,IAAI;AACdqnB,EAAAA,MAAM,EAAE;AACV,CAAC;AAED,MAAMpvB,aAAW,GAAG;AAClB6oB,EAAAA,QAAQ,EAAE,kBAAkB;AAC5B9gB,EAAAA,QAAQ,EAAE,SAAS;AACnBqnB,EAAAA,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,MAAM,SAAS/H,UAAU,CAAC;AAC9B7mB,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IACtB,IAAI,CAACkvB,YAAY,GAAG,IAAI;AAC1B,EAAA;;AAEA;EACA,WAAWvvB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAwB,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAAC6tB,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAAC7tB,OAAO,EAAE;AAC7B,IAAA;IAEA,KAAK,CAACA,OAAO,EAAE;AACjB,EAAA;;AAEA;;AAEAomB,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAM0H,QAAQ,GAAGz3B,OAAO,CAAC,IAAI,CAACuJ,OAAO,CAACwnB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAACxnB,OAAO,CAAC+tB,MAAM;IACvE,OAAO;AACLzH,MAAAA,KAAK,EAAE4H,QAAQ;AACf3H,MAAAA,iBAAiB,EAAE,CAAC,IAAI,CAACvmB,OAAO,CAAC+tB;KAClC;AACH,EAAA;AAEA1H,EAAAA,aAAaA,GAAG;IACd,IAAI,CAAC8H,UAAU,EAAE;AACnB,EAAA;AAEArH,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO,gBAAgB;AACzB,EAAA;AAEAC,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,OAAO,eAAe;AACxB,EAAA;;AAEA;;AAEAoH,EAAAA,UAAUA,GAAG;IACX,IAAI,IAAI,CAACF,YAAY,IAAI,CAACrB,KAAK,CAACC,WAAW,EAAE,EAAE;AAC7C,MAAA;AACF,IAAA;;AAEA;IACA,MAAMuB,WAAW,GAAG,EAAE;AACtB,IAAA,MAAMj8B,OAAO,GAAG,IAAI,CAAC4N,QAAQ;IAE7B,IAAI5N,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,eAAe,CAAC,EAAE;MAC/Cm4B,WAAW,CAACzB,YAAY,GAAG,MAAM,IAAI,CAAC7b,IAAI,EAAE;IAC9C,CAAC,MAAM,IAAI3e,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,YAAY,CAAC,EAAE;MACnDm4B,WAAW,CAAC1B,UAAU,GAAG,MAAM,IAAI,CAAC5b,IAAI,EAAE;IAC5C,CAAC,MAAM,IAAI3e,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,YAAY,CAAC,EAAE;AACnD;MACA,IAAIiH,OAAK,EAAE,EAAE;QACXkxB,WAAW,CAAC5B,YAAY,GAAG,MAAM,IAAI,CAAC1b,IAAI,EAAE;AAC9C,MAAA,CAAC,MAAM;QACLsd,WAAW,CAAC3B,aAAa,GAAG,MAAM,IAAI,CAAC3b,IAAI,EAAE;AAC/C,MAAA;AACF,IAAA,CAAC,MAAM,IAAI5T,OAAK,EAAE,EAAE;AAClB;MACAkxB,WAAW,CAAC3B,aAAa,GAAG,MAAM,IAAI,CAAC3b,IAAI,EAAE;AAC/C,IAAA,CAAC,MAAM;AACL;MACAsd,WAAW,CAAC5B,YAAY,GAAG,MAAM,IAAI,CAAC1b,IAAI,EAAE;AAC9C,IAAA;IAEA,IAAI,CAACmd,YAAY,GAAG,IAAIrB,KAAK,CAACz6B,OAAO,EAAEi8B,WAAW,CAAC;AACrD,EAAA;AACF;;AAEA;AACA;AACA;;AAEA75B,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAACtL,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;IACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;AAEA,EAAA,IAAIzG,UAAU,CAAC,IAAI,CAAC,EAAE;AACpB,IAAA;AACF,EAAA;AAEA5H,EAAAA,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAE2a,cAAY,EAAE,MAAM;AAC3C,IAAA,IAAI9T,SAAS,CAAC,IAAI,CAAC,EAAE;MACnB,IAAI,CAACwS,KAAK,EAAE;AACd,IAAA;AACF,EAAA,CAAC,CAAC;;AAEF;AACA,EAAA,MAAMigB,WAAW,GAAGjtB,cAAc,CAACE,OAAO,CAAC,qBAAqB,CAAC;AACjE,EAAA,IAAI+sB,WAAW,IAAIA,WAAW,KAAKt5B,MAAM,EAAE;IACzCi5B,MAAM,CAACttB,WAAW,CAAC2tB,WAAW,CAAC,CAACvd,IAAI,EAAE;AACxC,EAAA;AAEA,EAAA,MAAM5N,IAAI,GAAG8qB,MAAM,CAACrtB,mBAAmB,CAAC5L,MAAM,CAAC;AAC/CmO,EAAAA,IAAI,CAACiB,MAAM,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF5P,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,qBAAmB,EAAE,MAAM;EACjD,KAAK,MAAMnQ,QAAQ,IAAIwM,cAAc,CAAC7L,IAAI,CAAC,qBAAqB,CAAC,EAAE;IACjEy4B,MAAM,CAACrtB,mBAAmB,CAAC/L,QAAQ,CAAC,CAACmc,IAAI,EAAE;AAC7C,EAAA;AACF,CAAC,CAAC;AAEFxc,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAE+zB,YAAY,EAAE,MAAM;EAC1C,KAAK,MAAM37B,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC,kCAAkC,CAAC,EAAE;IAC7E,IAAI2F,gBAAgB,CAAC/I,OAAO,CAAC,CAACmnB,QAAQ,KAAK,OAAO,EAAE;MAClD0U,MAAM,CAACrtB,mBAAmB,CAACxO,OAAO,CAAC,CAAC2e,IAAI,EAAE;AAC5C,IAAA;AACF,EAAA;AACF,CAAC,CAAC;AAEFvO,oBAAoB,CAACyrB,MAAM,CAAC;;ACnL5B;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMpvB,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMwqB,qBAAqB,GAAG,CAAA,cAAA,EAAiBjuB,WAAS,CAAA,CAAE;AAE1D,MAAMkuB,sBAAsB,GAAG,oBAAoB;AAEnD,MAAMC,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE1D,MAAM9vB,SAAO,GAAG;AACd+vB,EAAAA,KAAK,EAAE,IAAI;AAAE;AACbC,EAAAA,SAAS,EAAE,CAAC;AACZC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,MAAM,EAAE;GACT;AACDC,EAAAA,OAAO,EAAE;AACPN,IAAAA,SAAS,EAAE,CAAC;AACZO,IAAAA,WAAW,EAAE,CAAC;AACdC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,eAAe,EAAE,CAAC;AAClBC,IAAAA,YAAY,EAAE;GACf;AACDC,EAAAA,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAAE;EACvBC,MAAM,EAAE,IAAI;AACd,CAAC;AAED,MAAM9wB,aAAW,GAAG;AAClB8vB,EAAAA,KAAK,EAAE,uBAAuB;AAC9BC,EAAAA,SAAS,EAAE,QAAQ;AACnBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBK,EAAAA,OAAO,EAAE,QAAQ;AACjBQ,EAAAA,UAAU,EAAE,OAAO;AACnBC,EAAAA,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,QAAQ,SAAS5vB,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC4wB,MAAM,GAAG,IAAI,CAACC,SAAS,EAAE;AAC9B,IAAA,IAAI,CAACC,SAAS,GAAGzuB,cAAc,CAAC7L,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAACwK,QAAQ,CAAC;AACxE,IAAA,IAAI,CAAC+vB,YAAY,GAAG1uB,cAAc,CAACE,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAACvB,QAAQ,CAAC+pB,aAAa,CAAC;IACzF,IAAI,CAACiG,gBAAgB,GAAG,IAAI;IAE5B,IAAI,IAAI,CAACJ,MAAM,EAAE;MACf,IAAI,CAAC/nB,kBAAkB,EAAE;AACzB;MACA,IAAI,CAACooB,SAAS,EAAE;AAClB,IAAA;AACF,EAAA;;AAEA;EACA,WAAWtxB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAqxB,EAAAA,WAAWA,GAAG;IACZ,OAAO,IAAI,CAACF,gBAAgB;AAC9B,EAAA;AAEAG,EAAAA,QAAQA,GAAG;IACT,IAAI,CAACF,SAAS,EAAE;AAClB,EAAA;;AAEA;AACAJ,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,IAAI,CAAC5vB,OAAO,CAACyuB,KAAK,EAAE;MACtB,OAAO,OAAO,IAAI,CAACzuB,OAAO,CAACyuB,KAAK,KAAK,QAAQ,GAC3CrtB,cAAc,CAACE,OAAO,CAAC,IAAI,CAACtB,OAAO,CAACyuB,KAAK,CAAC,GAC1C,IAAI,CAACzuB,OAAO,CAACyuB,KAAK;AACtB,IAAA;;AAEA;AACA,IAAA,MAAMte,MAAM,GAAG,IAAI,CAACpQ,QAAQ,CAAC+pB,aAAa;AAC1C,IAAA,OAAO1oB,cAAc,CAACE,OAAO,CAAC,wBAAwB,EAAE6O,MAAM,CAAC;AACjE,EAAA;AAEAvI,EAAAA,kBAAkBA,GAAG;AACnBrT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAACK,SAAS,EAAE,CAAC;AAC7Dz7B,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAACK,SAAS,EAAE,CAAC;AAChE,EAAA;AAEAA,EAAAA,SAASA,GAAG;AACV,IAAA,MAAMG,QAAQ,GAAG,IAAI,CAACR,MAAM,CAAC38B,KAAK;AAClC,IAAA,MAAMo9B,KAAK,GAAG,IAAI,CAACC,eAAe,CAACF,QAAQ,CAAC;AAC5C,IAAA,MAAMG,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACH,KAAK,CAAC;AAE7C,IAAA,IAAIE,QAAQ,KAAK,IAAI,CAACP,gBAAgB,EAAE;MACtC,IAAI,CAACA,gBAAgB,GAAGO,QAAQ;AAChC,MAAA,IAAI,CAACE,SAAS,CAACF,QAAQ,EAAEF,KAAK,CAAC;MAE/B77B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEuuB,qBAAqB,EAAE;QACzDgC,QAAQ;QACRF,KAAK;QACLD,QAAQ,EAAEA,QAAQ,CAAC94B,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5C,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAg5B,eAAeA,CAACF,QAAQ,EAAE;IACxB,IAAI,CAACA,QAAQ,EAAE;AACb,MAAA,OAAO,CAAC;AACV,IAAA;;AAEA;IACA,IAAI,OAAO,IAAI,CAACnwB,OAAO,CAACyvB,MAAM,KAAK,UAAU,EAAE;AAC7C,MAAA,OAAO,IAAI,CAACzvB,OAAO,CAACyvB,MAAM,CAACU,QAAQ,CAAC;AACtC,IAAA;IAEA,MAAM;AAAEnB,MAAAA;KAAS,GAAG,IAAI,CAAChvB,OAAO;IAChC,IAAIowB,KAAK,GAAG,CAAC;;AAEb;IACA,IAAID,QAAQ,CAAC94B,MAAM,IAAI,IAAI,CAAC2I,OAAO,CAAC0uB,SAAS,EAAE;MAC7C0B,KAAK,IAAIpB,OAAO,CAACN,SAAS;AAC5B,IAAA;IAEA,IAAIyB,QAAQ,CAAC94B,MAAM,IAAI,IAAI,CAAC2I,OAAO,CAAC0uB,SAAS,GAAG,CAAC,EAAE;MACjD0B,KAAK,IAAIpB,OAAO,CAACC,WAAW;AAC9B,IAAA;;AAEA;AACA,IAAA,IAAI,OAAO,CAACvvB,IAAI,CAACywB,QAAQ,CAAC,EAAE;MAC1BC,KAAK,IAAIpB,OAAO,CAACE,SAAS;AAC5B,IAAA;AAEA,IAAA,IAAI,OAAO,CAACxvB,IAAI,CAACywB,QAAQ,CAAC,EAAE;MAC1BC,KAAK,IAAIpB,OAAO,CAACG,SAAS;AAC5B,IAAA;AAEA,IAAA,IAAI,IAAI,CAACzvB,IAAI,CAACywB,QAAQ,CAAC,EAAE;MACvBC,KAAK,IAAIpB,OAAO,CAACI,OAAO;AAC1B,IAAA;;AAEA;AACA,IAAA,IAAI,wBAAwB,CAAC1vB,IAAI,CAACywB,QAAQ,CAAC,EAAE;MAC3CC,KAAK,IAAIpB,OAAO,CAACK,OAAO;AAC1B,IAAA;;AAEA;AACA,IAAA,IAAI,gDAAgD,CAAC3vB,IAAI,CAACywB,QAAQ,CAAC,EAAE;MACnEC,KAAK,IAAIpB,OAAO,CAACM,eAAe;AAClC,IAAA;AAEA,IAAA,IAAIa,QAAQ,CAAC94B,MAAM,IAAI,EAAE,EAAE;MACzB+4B,KAAK,IAAIpB,OAAO,CAACO,YAAY;AAC/B,IAAA;AAEA,IAAA,OAAOa,KAAK;AACd,EAAA;EAEAG,gBAAgBA,CAACH,KAAK,EAAE;IACtB,IAAIA,KAAK,KAAK,CAAC,EAAE;AACf,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,MAAM,CAACxB,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,GAAG,IAAI,CAAC9uB,OAAO,CAACwvB,UAAU;IAElD,IAAIY,KAAK,IAAIxB,IAAI,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;IAEA,IAAIwB,KAAK,IAAIvB,IAAI,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;IAEA,IAAIuB,KAAK,IAAItB,IAAI,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,OAAO,QAAQ;AACjB,EAAA;EAEA0B,SAASA,CAACF,QAAQ,EAAE;AAClB;AACA,IAAA,IAAIA,QAAQ,EAAE;AACZ,MAAA,IAAI,CAACvwB,QAAQ,CAAC1G,OAAO,CAACo3B,UAAU,GAAGH,QAAQ;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAACvwB,QAAQ,CAAC1G,OAAO,CAACo3B,UAAU;AACzC,IAAA;;AAEA;AACA,IAAA,MAAMC,aAAa,GAAGJ,QAAQ,GAAG9B,eAAe,CAAClwB,OAAO,CAACgyB,QAAQ,CAAC,GAAG,EAAE;AAEvE,IAAA,KAAK,MAAM,CAACjyB,KAAK,EAAEsyB,OAAO,CAAC,IAAI,IAAI,CAACd,SAAS,CAAC/4B,OAAO,EAAE,EAAE;MACvD,IAAIuH,KAAK,IAAIqyB,aAAa,EAAE;AAC1BC,QAAAA,OAAO,CAACr0B,SAAS,CAACiM,GAAG,CAAC,QAAQ,CAAC;AACjC,MAAA,CAAC,MAAM;AACLooB,QAAAA,OAAO,CAACr0B,SAAS,CAACrJ,MAAM,CAAC,QAAQ,CAAC;AACpC,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,IAAI,CAAC68B,YAAY,EAAE;MACrB,IAAIQ,QAAQ,IAAI,IAAI,CAACtwB,OAAO,CAAC2uB,QAAQ,CAAC2B,QAAQ,CAAC,EAAE;AAC/C,QAAA,IAAI,CAACR,YAAY,CAAC5P,WAAW,GAAG,IAAI,CAAClgB,OAAO,CAAC2uB,QAAQ,CAAC2B,QAAQ,CAAC;AAC/D,QAAA,IAAI,CAACR,YAAY,CAACz2B,OAAO,CAACo3B,UAAU,GAAGH,QAAQ;;AAE/C;AACA,QAAA,MAAMM,QAAQ,GAAG;AACfhC,UAAAA,IAAI,EAAE,QAAQ;AACdC,UAAAA,IAAI,EAAE,SAAS;AACfC,UAAAA,IAAI,EAAE,MAAM;AACZC,UAAAA,MAAM,EAAE;SACT;AACD,QAAA,IAAI,CAACe,YAAY,CAAClmB,KAAK,CAACgF,WAAW,CAAC,kBAAkB,EAAE,SAASgiB,QAAQ,CAACN,QAAQ,CAAC,QAAQ,CAAC;AAC9F,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAACR,YAAY,CAAC5P,WAAW,GAAG,EAAE;AAClC,QAAA,OAAO,IAAI,CAAC4P,YAAY,CAACz2B,OAAO,CAACo3B,UAAU;AAC7C,MAAA;AACF,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAl8B,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,CAAA,gBAAA,EAAmBwF,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE,EAAE,MAAM;EAC7E,KAAK,MAAM3R,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAACg5B,sBAAsB,CAAC,EAAE;AACjEmB,IAAAA,QAAQ,CAAC/uB,mBAAmB,CAACxO,OAAO,CAAC;AACvC,EAAA;AACF,CAAC,CAAC;;AClQF;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAM+sB,cAAc,GAAG,CAAA,QAAA,EAAWxwB,WAAS,CAAA,CAAE;AAC7C,MAAMywB,aAAW,GAAG,CAAA,KAAA,EAAQzwB,WAAS,CAAA,CAAE;AACvC,MAAM0wB,uBAAuB,GAAG,CAAA,gBAAA,EAAmB1wB,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE7E,MAAMktB,iBAAiB,GAAG,eAAe;AACzC,MAAMC,gBAAc,GAAG,OAAO;;AAE9B;AACA,MAAMC,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AAExD,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,mBAAmB,GAAG,cAAc;AAC1C,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,eAAe,GAAG,UAAU;AAClC,MAAMC,sBAAsB,GAAG,iBAAiB;AAChD,MAAMC,sBAAsB,GAAG,iBAAiB;AAChD,MAAMC,oBAAoB,GAAG,eAAe;AAE5C,MAAMC,cAAc,GAAG,GAAG;;AAE1B;AACA,MAAMC,KAAK,GAAG;AACZC,EAAAA,OAAO,EAAE;AAAEC,IAAAA,SAAS,EAAE,SAAS;AAAEC,IAAAA,OAAO,EAAE,QAAQ;AAAEx4B,IAAAA,MAAM,EAAE;GAAW;AACvEy4B,EAAAA,YAAY,EAAE;AAAEF,IAAAA,SAAS,EAAE,MAAM;AAAEC,IAAAA,OAAO,EAAE,cAAc;AAAEx4B,IAAAA,MAAM,EAAE;GAAiB;AACrF04B,EAAAA,KAAK,EAAE;AAAEH,IAAAA,SAAS,EAAE,MAAM;AAAEC,IAAAA,OAAO,EAAE,WAAW;AAAEx4B,IAAAA,MAAM,EAAE;AAAa;AACzE,CAAC;AAED,MAAMoF,SAAO,GAAG;AACduzB,EAAAA,MAAM,EAAE,IAAI;AACZ56B,EAAAA,MAAM,EAAE,IAAI;AACZ66B,EAAAA,IAAI,EAAE,KAAK;AACXzM,EAAAA,SAAS,EAAE,GAAG;AACdhxB,EAAAA,IAAI,EAAE;AACR,CAAC;AAED,MAAMkK,aAAW,GAAG;AAClBszB,EAAAA,MAAM,EAAE,cAAc;AACtB56B,EAAAA,MAAM,EAAE,eAAe;AACvB66B,EAAAA,IAAI,EAAE,SAAS;AACfzM,EAAAA,SAAS,EAAE,QAAQ;AACnBhxB,EAAAA,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;;AAEA,MAAM09B,QAAQ,SAASryB,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC4wB,MAAM,GAAGvuB,cAAc,CAACE,OAAO,CAAC2vB,gBAAc,EAAE,IAAI,CAAClxB,QAAQ,CAAC;AACnE,IAAA,IAAI,CAAC,IAAI,CAAC4vB,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACyC,KAAK,GAAGT,KAAK,CAAC,IAAI,CAAC3xB,OAAO,CAACvL,IAAI,CAAC,IAAIk9B,KAAK,CAACC,OAAO;AACtD,IAAA,IAAI,CAACS,OAAO,GAAG,IAAI,CAACC,cAAc,EAAE;IACpC,IAAI,CAACC,MAAM,GAAG,EAAE;IAEhB,IAAI,CAACC,WAAW,EAAE;IAClB,IAAI,CAACC,YAAY,EAAE;IACnB,IAAI,CAAC7qB,kBAAkB,EAAE;IACzB,IAAI,CAAC8qB,OAAO,EAAE;AAChB,EAAA;;AAEA;EACA,WAAWh0B,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA+zB,EAAAA,QAAQA,GAAG;AACT,IAAA,OAAO,IAAI,CAAChD,MAAM,CAAC38B,KAAK;AAC1B,EAAA;EAEA4/B,QAAQA,CAAC5/B,KAAK,EAAE;AACd,IAAA,IAAI,CAAC28B,MAAM,CAAC38B,KAAK,GAAG,IAAI,CAAC6/B,SAAS,CAACjN,MAAM,CAAC5yB,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC0/B,OAAO,EAAE;IACd,IAAI,CAACI,cAAc,EAAE;AACvB,EAAA;AAEA3X,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAACwU,MAAM,CAAC38B,KAAK,GAAG,EAAE;IACtB,IAAI,CAAC0/B,OAAO,EAAE;AACd,IAAA,IAAI,CAAC/C,MAAM,CAACvhB,KAAK,EAAE;AACrB,EAAA;AAEAA,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAACuhB,MAAM,CAACvhB,KAAK,EAAE;AACnB;IACA,MAAM2kB,GAAG,GAAG,IAAI,CAACpD,MAAM,CAAC38B,KAAK,CAACqE,MAAM;IACpC,IAAI,CAACs4B,MAAM,CAACqD,iBAAiB,CAACD,GAAG,EAAEA,GAAG,CAAC;IACvC,IAAI,CAACL,OAAO,EAAE;AAChB,EAAA;AAEAtyB,EAAAA,OAAOA,GAAG;AACR7L,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACm7B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACsD,QAAQ,CAAC;AACrD1+B,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACm7B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACuD,QAAQ,CAAC;AACrD,IAAA,KAAK,MAAMz+B,IAAI,IAAIy8B,WAAW,EAAE;AAC9B38B,MAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACm7B,MAAM,EAAEl7B,IAAI,EAAE,IAAI,CAAC0+B,OAAO,CAAC;AACnD,IAAA;AAEA,IAAA,IAAI,CAACC,eAAe,EAAEngC,MAAM,EAAE;IAC9B,IAAI,CAAC8M,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACm+B,mBAAmB,CAAC;IACnD,KAAK,CAAChxB,OAAO,EAAE;AACjB,EAAA;;AAEA;AACAkyB,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,IAAI,CAACtyB,OAAO,CAAC3I,MAAM,EAAE;AACvB,MAAA,OAAO,IAAI,CAAC2I,OAAO,CAAC3I,MAAM;AAC5B,IAAA;AAEA,IAAA,MAAMg8B,SAAS,GAAGh7B,MAAM,CAACsQ,QAAQ,CAAC,IAAI,CAACgnB,MAAM,CAACj2B,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;AAC5E,IAAA,OAAOrB,MAAM,CAACkW,KAAK,CAAC8kB,SAAS,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAG,CAAC,GAAGA,SAAS;AACjE,EAAA;AAEAb,EAAAA,WAAWA,GAAG;AACZ,IAAA,MAAM/D,KAAK,GAAG,IAAI,CAACkB,MAAM;;AAEzB;AACA;IACA,IAAIlB,KAAK,CAACh6B,IAAI,KAAK,QAAQ,IAAIg6B,KAAK,CAACh6B,IAAI,KAAK,UAAU,EAAE;MACxDg6B,KAAK,CAACh6B,IAAI,GAAG,MAAM;AACrB,IAAA;AAEAg6B,IAAAA,KAAK,CAACnyB,SAAS,CAACiM,GAAG,CAAC4oB,gBAAgB,CAAC;IACrC1C,KAAK,CAAC11B,YAAY,CAAC,WAAW,EAAE6sB,MAAM,CAAC,IAAI,CAACyM,OAAO,CAAC,CAAC;IACrD5D,KAAK,CAAC11B,YAAY,CAAC,WAAW,EAAE,IAAI,CAACq5B,KAAK,CAACP,SAAS,CAAC;IACrDpD,KAAK,CAAC11B,YAAY,CAAC,SAAS,EAAE,IAAI,CAACq5B,KAAK,CAACN,OAAO,CAAC;AAEjD,IAAA,IAAI,CAACrD,KAAK,CAAC/0B,YAAY,CAAC,cAAc,CAAC,EAAE;AACvC+0B,MAAAA,KAAK,CAAC11B,YAAY,CAAC,cAAc,EAAE,eAAe,CAAC;AACrD,IAAA;;AAEA;IACA,IAAI01B,KAAK,CAACz7B,KAAK,EAAE;MACfy7B,KAAK,CAACz7B,KAAK,GAAG,IAAI,CAAC6/B,SAAS,CAACpE,KAAK,CAACz7B,KAAK,CAAC;AAC3C,IAAA;AACF,EAAA;AAEAy/B,EAAAA,YAAYA,GAAG;AACb,IAAA,MAAMnd,SAAS,GAAGza,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;IAC/C/J,SAAS,CAACmV,SAAS,GAAG4G,gBAAgB;AACtC/b,IAAAA,SAAS,CAACvc,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAE7C,MAAM;AAAEk5B,MAAAA;KAAQ,GAAG,IAAI,CAACjyB,OAAO;IAC/B,IAAIszB,UAAU,GAAG,CAAC;IAClB,IAAIC,OAAO,GAAG,CAAC;AAEf,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACnB,OAAO,EAAEmB,CAAC,EAAE,EAAE;AACrC,MAAA,MAAMC,IAAI,GAAG54B,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;MAC1CoU,IAAI,CAAChJ,SAAS,GAAG6G,eAAe;AAChChc,MAAAA,SAAS,CAACjI,MAAM,CAAComB,IAAI,CAAC;AACtB,MAAA,IAAI,CAAClB,MAAM,CAAC3wB,IAAI,CAAC6xB,IAAI,CAAC;;AAEtB;AACA,MAAA,IAAIC,KAAK,CAACC,OAAO,CAAC1B,MAAM,CAAC,IAAIA,MAAM,CAAC56B,MAAM,GAAG,CAAC,EAAE;AAC9Ck8B,QAAAA,OAAO,EAAE;AACT,QAAA,IAAIA,OAAO,KAAKtB,MAAM,CAACqB,UAAU,CAAC,IAAIE,CAAC,GAAG,IAAI,CAACnB,OAAO,GAAG,CAAC,EAAE;AAC1D,UAAA,MAAM5M,SAAS,GAAG5qB,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;UAC/CoG,SAAS,CAACgF,SAAS,GAAGgH,oBAAoB;AAC1ChM,UAAAA,SAAS,CAACvF,WAAW,GAAG,IAAI,CAAClgB,OAAO,CAACylB,SAAS;AAC9CnQ,UAAAA,SAAS,CAACjI,MAAM,CAACoY,SAAS,CAAC;AAC3B6N,UAAAA,UAAU,GAAG54B,IAAI,CAAC8D,GAAG,CAAC80B,UAAU,GAAG,CAAC,EAAErB,MAAM,CAAC56B,MAAM,GAAG,CAAC,CAAC;AACxDk8B,UAAAA,OAAO,GAAG,CAAC;AACb,QAAA;AACF,MAAA;AACF,IAAA;IAEA,IAAI,CAACH,eAAe,GAAG9d,SAAS;AAChC,IAAA,IAAI,CAACvV,QAAQ,CAACsN,MAAM,CAACiI,SAAS,CAAC;IAC/B,IAAI,CAACvV,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC6oB,mBAAmB,CAAC;AAClD,EAAA;AAEAxpB,EAAAA,kBAAkBA,GAAG;AACnB;AACA;AACA;IACA,IAAI,CAACqrB,QAAQ,GAAG,MAAM,IAAI,CAACW,YAAY,EAAE;IACzC,IAAI,CAACV,QAAQ,GAAG,MAAM,IAAI,CAAC9kB,KAAK,EAAE;IAClC,IAAI,CAAC+kB,OAAO,GAAG,MAAM,IAAI,CAACT,OAAO,EAAE;AAEnCn+B,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACsD,QAAQ,CAAC;AACpD1+B,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACuD,QAAQ,CAAC;;AAEpD;AACA,IAAA,KAAK,MAAMz+B,IAAI,IAAIy8B,WAAW,EAAE;AAC9B38B,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAEl7B,IAAI,EAAE,IAAI,CAAC0+B,OAAO,CAAC;AAClD,IAAA;AACF,EAAA;AAEAS,EAAAA,YAAYA,GAAG;IACb,MAAMC,SAAS,GAAG,IAAI,CAAChB,SAAS,CAAC,IAAI,CAAClD,MAAM,CAAC38B,KAAK,CAAC;AACnD,IAAA,IAAI6gC,SAAS,KAAK,IAAI,CAAClE,MAAM,CAAC38B,KAAK,EAAE;AACnC,MAAA,IAAI,CAAC28B,MAAM,CAAC38B,KAAK,GAAG6gC,SAAS;AAC/B,IAAA;IAEA,IAAI,CAACnB,OAAO,EAAE;IAEdn+B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE+wB,aAAW,EAAE;AAAE99B,MAAAA,KAAK,EAAE,IAAI,CAAC28B,MAAM,CAAC38B;AAAM,KAAC,CAAC;IAE9E,IAAI,CAAC8/B,cAAc,EAAE;AACvB,EAAA;EAEAD,SAASA,CAAC7/B,KAAK,EAAE;IACf,OAAOA,KAAK,CAACqD,OAAO,CAAC,IAAI,CAAC+7B,KAAK,CAAC94B,MAAM,EAAE,EAAE,CAAC,CAAC/B,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC86B,OAAO,CAAC;AACpE,EAAA;AAEAK,EAAAA,OAAOA,GAAG;IACR,MAAM;AAAE1/B,MAAAA;KAAO,GAAG,IAAI,CAAC28B,MAAM;IAC7B,MAAMmE,SAAS,GAAGj5B,QAAQ,CAACoD,aAAa,KAAK,IAAI,CAAC0xB,MAAM;AACxD;IACA,MAAMoE,KAAK,GAAGr5B,IAAI,CAAC8D,GAAG,CAAC,IAAI,CAACmxB,MAAM,CAACqE,cAAc,IAAIhhC,KAAK,CAACqE,MAAM,EAAE,IAAI,CAACg7B,OAAO,GAAG,CAAC,CAAC;AAEpF,IAAA,KAAK,MAAM,CAACh0B,KAAK,EAAEo1B,IAAI,CAAC,IAAI,IAAI,CAAClB,MAAM,CAACz7B,OAAO,EAAE,EAAE;AACjD,MAAA,MAAMm9B,IAAI,GAAGjhC,KAAK,CAACqL,KAAK,CAAC,IAAI,EAAE;AAC/Bo1B,MAAAA,IAAI,CAACvT,WAAW,GAAG+T,IAAI,IAAI,IAAI,CAACj0B,OAAO,CAACkyB,IAAI,GAAGR,cAAc,GAAGuC,IAAI;MACpER,IAAI,CAACn3B,SAAS,CAAC6H,MAAM,CAACotB,sBAAsB,EAAE96B,OAAO,CAACw9B,IAAI,CAAC,CAAC;AAC5DR,MAAAA,IAAI,CAACn3B,SAAS,CAAC6H,MAAM,CAACqtB,sBAAsB,EAAEsC,SAAS,IAAIz1B,KAAK,KAAK01B,KAAK,CAAC;AAC7E,IAAA;AACF,EAAA;AAEAjB,EAAAA,cAAcA,GAAG;IACf,MAAM;AAAE9/B,MAAAA;KAAO,GAAG,IAAI,CAAC28B,MAAM;AAC7B,IAAA,IAAI38B,KAAK,CAACqE,MAAM,KAAK,IAAI,CAACg7B,OAAO,EAAE;MACjC99B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE8wB,cAAc,EAAE;AAAE79B,QAAAA;AAAM,OAAC,CAAC;AAChE,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAuB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEk2B,uBAAuB,EAAE,MAAM;EACvD,KAAK,MAAM5+B,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAACy7B,iBAAiB,CAAC,EAAE;AAC5DmB,IAAAA,QAAQ,CAACxxB,mBAAmB,CAACxO,OAAO,CAAC;AACvC,EAAA;AACF,CAAC,CAAC;;AC5QF;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMowB,SAAS,GAAG,CAAA,GAAA,EAAM7zB,WAAS,CAAA,CAAE;AACnC,MAAM8zB,YAAY,GAAG,CAAA,MAAA,EAAS9zB,WAAS,CAAA,CAAE;AACzC,MAAM0d,cAAY,GAAG,CAAA,MAAA,EAAS1d,WAAS,CAAA,CAAE;AACzC,MAAM+zB,YAAY,GAAG,CAAA,MAAA,EAAS/zB,WAAS,CAAA,CAAE;AAEzC,MAAMg0B,mBAAmB,GAAG,iBAAiB;AAC7C,MAAMC,oBAAoB,GAAG,aAAa;AAC1C,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,qBAAqB,GAAG,eAAe;AAE7C,MAAMC,eAAe,GAAG,MAAM;AAC9B,MAAMC,uBAAuB,GAAG,cAAc;AAC9C,MAAM3wB,mBAAiB,GAAG,QAAQ;AAElC,MAAM4wB,oBAAoB,GAAG,+OAA+O;AAE5Q,MAAMj2B,SAAO,GAAG;AACd+mB,EAAAA,SAAS,EAAE,GAAG;AACdmP,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,QAAQ,EAAE,IAAI;AACdtW,EAAAA,WAAW,EAAE,EAAE;AACfuW,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,WAAW,EAAEJ,oBAAoB;AACjCK,EAAAA,YAAY,EAAE;AAChB,CAAC;AAED,MAAMr2B,aAAW,GAAG;AAClB8mB,EAAAA,SAAS,EAAE,eAAe;AAC1BmP,EAAAA,eAAe,EAAE,SAAS;AAC1BC,EAAAA,QAAQ,EAAE,eAAe;AACzBtW,EAAAA,WAAW,EAAE,QAAQ;AACrBuW,EAAAA,WAAW,EAAE,SAAS;AACtBC,EAAAA,WAAW,EAAE,QAAQ;AACrBC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,KAAK,SAASn1B,aAAa,CAAC;AAChCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC4wB,MAAM,GAAGvuB,cAAc,CAACE,OAAO,CAACgzB,oBAAoB,EAAE,IAAI,CAACv0B,QAAQ,CAAC;IACzE,IAAI,CAACm1B,MAAM,GAAG,EAAE;AAChB,IAAA,IAAI,CAACC,cAAc,GAAG,IAAIvhC,GAAG,EAAE;AAC/B,IAAA,IAAI,CAACwhC,WAAW,GAAG,IAAI,CAAA;;AAEvB,IAAA,IAAI,CAAC,IAAI,CAACzF,MAAM,EAAE;MAChB,IAAI,CAAC0F,YAAY,EAAE;AACrB,IAAA;IAEA,IAAI,CAACC,wBAAwB,EAAE;IAC/B,IAAI,CAAC1tB,kBAAkB,EAAE;AAC3B,EAAA;;AAEA;EACA,WAAWlJ,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;EACA2J,GAAGA,CAACvV,KAAK,EAAE;IACT,MAAMuiC,YAAY,GAAG3P,MAAM,CAAC5yB,KAAK,CAAC,CAACgO,IAAI,EAAE;IAEzC,IAAI,CAACu0B,YAAY,EAAE;AACjB,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC,IAAI,CAACv1B,OAAO,CAAC40B,eAAe,IAAI,IAAI,CAACM,MAAM,CAACn+B,QAAQ,CAACw+B,YAAY,CAAC,EAAE;AACvE,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAACv1B,OAAO,CAAC60B,QAAQ,KAAK,IAAI,IAAI,IAAI,CAACK,MAAM,CAAC79B,MAAM,IAAI,IAAI,CAAC2I,OAAO,CAAC60B,QAAQ,EAAE;AACjF,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAMW,QAAQ,GAAGjhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEm0B,SAAS,EAAE;AAC9DlhC,MAAAA,KAAK,EAAEuiC,YAAY;MACnBv/B,aAAa,EAAE,IAAI,CAAC25B;AACtB,KAAC,CAAC;IAEF,IAAI6F,QAAQ,CAAC5xB,gBAAgB,EAAE;AAC7B,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,MAAM6xB,IAAI,GAAG,IAAI,CAACC,WAAW,CAACH,YAAY,CAAC;IAC3C,IAAI,CAACx1B,QAAQ,CAACuf,YAAY,CAACmW,IAAI,EAAE,IAAI,CAAC9F,MAAM,CAAC;AAC7C,IAAA,IAAI,CAACuF,MAAM,CAACtzB,IAAI,CAAC2zB,YAAY,CAAC;IAE9BhhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEge,cAAY,EAAE;AAChDjrB,MAAAA,MAAM,EAAE,IAAI,CAAC6iC,SAAS;AACxB,KAAC,CAAC;AAEF,IAAA,OAAOF,IAAI;AACb,EAAA;EAEAxiC,MAAMA,CAAC2iC,WAAW,EAAE;AAClB,IAAA,IAAIH,IAAI;AACR,IAAA,IAAIziC,KAAK;AAET,IAAA,IAAI,OAAO4iC,WAAW,KAAK,QAAQ,EAAE;AACnC5iC,MAAAA,KAAK,GAAG4iC,WAAW;AACnBH,MAAAA,IAAI,GAAG,IAAI,CAACI,gBAAgB,CAAC7iC,KAAK,CAAC;AACrC,IAAA,CAAC,MAAM;AACLyiC,MAAAA,IAAI,GAAGG,WAAW;AAClB5iC,MAAAA,KAAK,GAAG,IAAI,CAAC8iC,aAAa,CAACL,IAAI,CAAC;AAClC,IAAA;AAEA,IAAA,IAAI,CAACA,IAAI,IAAI,CAACziC,KAAK,EAAE;AACnB,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,MAAM+iC,WAAW,GAAGxhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEo0B,YAAY,EAAE;MACpEnhC,KAAK;MACLyiC,IAAI;MACJz/B,aAAa,EAAE,IAAI,CAAC25B;AACtB,KAAC,CAAC;IAEF,IAAIoG,WAAW,CAACnyB,gBAAgB,EAAE;AAChC,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AACA,IAAA,IAAI,CAACuxB,cAAc,CAACjiC,MAAM,CAACuiC,IAAI,CAAC;AAChC,IAAA,IAAI,IAAI,CAACL,WAAW,KAAKK,IAAI,EAAE;MAC7B,IAAI,CAACL,WAAW,GAAG,IAAI;AACzB,IAAA;;AAEA;IACAK,IAAI,CAACxiC,MAAM,EAAE;AACb,IAAA,IAAI,CAACiiC,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC57B,MAAM,CAAC08B,CAAC,IAAIA,CAAC,KAAKhjC,KAAK,CAAC;IAElDuB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEge,cAAY,EAAE;AAChDjrB,MAAAA,MAAM,EAAE,IAAI,CAAC6iC,SAAS;AACxB,KAAC,CAAC;AAEF,IAAA,OAAO,IAAI;AACb,EAAA;AAEAM,EAAAA,cAAcA,GAAG;AACf,IAAA,MAAMC,aAAa,GAAG,CAAC,GAAG,IAAI,CAACf,cAAc,CAAC;AAC9C,IAAA,KAAK,MAAMM,IAAI,IAAIS,aAAa,EAAE;AAChC,MAAA,IAAI,CAACjjC,MAAM,CAACwiC,IAAI,CAAC;AACnB,IAAA;AAEA,IAAA,IAAI,CAAC9F,MAAM,EAAEvhB,KAAK,EAAE;AACtB,EAAA;AAEAunB,EAAAA,SAASA,GAAG;AACV,IAAA,OAAO,CAAC,GAAG,IAAI,CAACT,MAAM,CAAC;AACzB,EAAA;AAEAiB,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,CAAC,GAAG,IAAI,CAAChB,cAAc,CAAC,CAACl0B,GAAG,CAACw0B,IAAI,IAAI,IAAI,CAACK,aAAa,CAACL,IAAI,CAAC,CAAC;AACvE,EAAA;AAEAta,EAAAA,KAAKA,GAAG;IACN,MAAMib,KAAK,GAAGh1B,cAAc,CAAC7L,IAAI,CAACg/B,aAAa,EAAE,IAAI,CAACx0B,QAAQ,CAAC;AAC/D,IAAA,KAAK,MAAM01B,IAAI,IAAIW,KAAK,EAAE;MACxBX,IAAI,CAACxiC,MAAM,EAAE;AACf,IAAA;IAEA,IAAI,CAACiiC,MAAM,GAAG,EAAE;AAChB,IAAA,IAAI,CAACC,cAAc,CAACha,KAAK,EAAE;IAC3B,IAAI,CAACia,WAAW,GAAG,IAAI;IAEvB7gC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEge,cAAY,EAAE;AAChDjrB,MAAAA,MAAM,EAAE;AACV,KAAC,CAAC;AACJ,EAAA;AAEAujC,EAAAA,cAAcA,GAAG;AACf,IAAA,KAAK,MAAMZ,IAAI,IAAI,IAAI,CAACN,cAAc,EAAE;AACtCM,MAAAA,IAAI,CAACn5B,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C,IAAA;AAEA,IAAA,IAAI,CAACoxB,cAAc,CAACha,KAAK,EAAE;IAC3B,IAAI,CAACia,WAAW,GAAG,IAAI;IAEvB7gC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEq0B,YAAY,EAAE;AAChD3iB,MAAAA,QAAQ,EAAE;AACZ,KAAC,CAAC;AACJ,EAAA;AAEA6kB,EAAAA,UAAUA,CAACb,IAAI,EAAEc,OAAO,GAAG,EAAE,EAAE;IAC7B,MAAM;AAAEC,MAAAA,cAAc,GAAG,KAAK;AAAEC,MAAAA,WAAW,GAAG;AAAM,KAAC,GAAGF,OAAO;AAC/D,IAAA,MAAMG,YAAY,GAAG,IAAI,CAACC,gBAAgB,EAAE;AAE5C,IAAA,IAAI,CAACD,YAAY,CAAC3/B,QAAQ,CAAC0+B,IAAI,CAAC,EAAE;AAChC,MAAA;AACF,IAAA;AAEA,IAAA,IAAIgB,WAAW,IAAI,IAAI,CAACrB,WAAW,EAAE;AACnC;MACA,MAAMwB,WAAW,GAAGF,YAAY,CAACp4B,OAAO,CAAC,IAAI,CAAC82B,WAAW,CAAC;AAC1D,MAAA,MAAMyB,SAAS,GAAGH,YAAY,CAACp4B,OAAO,CAACm3B,IAAI,CAAC;MAC5C,MAAMqB,KAAK,GAAGp8B,IAAI,CAAC8D,GAAG,CAACo4B,WAAW,EAAEC,SAAS,CAAC;MAC9C,MAAM9D,GAAG,GAAGr4B,IAAI,CAAC6D,GAAG,CAACq4B,WAAW,EAAEC,SAAS,CAAC;MAE5C,IAAI,CAACL,cAAc,EAAE;QACnB,IAAI,CAACH,cAAc,EAAE;AACvB,MAAA;MAEA,KAAK,IAAI7C,CAAC,GAAGsD,KAAK,EAAEtD,CAAC,IAAIT,GAAG,EAAES,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC2B,cAAc,CAAC5sB,GAAG,CAACmuB,YAAY,CAAClD,CAAC,CAAC,CAAC;QACxCkD,YAAY,CAAClD,CAAC,CAAC,CAACl3B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AAClD,MAAA;IACF,CAAC,MAAM,IAAIyyB,cAAc,EAAE;AACzB;MACA,IAAI,IAAI,CAACrB,cAAc,CAAC7iC,GAAG,CAACmjC,IAAI,CAAC,EAAE;AACjC,QAAA,IAAI,CAACN,cAAc,CAACjiC,MAAM,CAACuiC,IAAI,CAAC;AAChCA,QAAAA,IAAI,CAACn5B,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAACoxB,cAAc,CAAC5sB,GAAG,CAACktB,IAAI,CAAC;AAC7BA,QAAAA,IAAI,CAACn5B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;QACrC,IAAI,CAACqxB,WAAW,GAAGK,IAAI;AACzB,MAAA;AACF,IAAA,CAAC,MAAM;AACL;MACA,IAAI,CAACY,cAAc,EAAE;AACrB,MAAA,IAAI,CAAClB,cAAc,CAAC5sB,GAAG,CAACktB,IAAI,CAAC;AAC7BA,MAAAA,IAAI,CAACn5B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;MACrC,IAAI,CAACqxB,WAAW,GAAGK,IAAI;AACzB,IAAA;IAEAlhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEq0B,YAAY,EAAE;AAChD3iB,MAAAA,QAAQ,EAAE,IAAI,CAAC0kB,iBAAiB;AAClC,KAAC,CAAC;AACJ,EAAA;AAEA/nB,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAACuhB,MAAM,EAAEvhB,KAAK,EAAE;AACtB,EAAA;;AAEA;AACAuoB,EAAAA,gBAAgBA,GAAG;IACjB,OAAOv1B,cAAc,CAAC7L,IAAI,CAACg/B,aAAa,EAAE,IAAI,CAACx0B,QAAQ,CAAC;AAC1D,EAAA;AAEAs1B,EAAAA,YAAYA,GAAG;AACb,IAAA,MAAM5G,KAAK,GAAG5zB,QAAQ,CAACwkB,aAAa,CAAC,OAAO,CAAC;IAC7CoP,KAAK,CAACh6B,IAAI,GAAG,MAAM;IACnBg6B,KAAK,CAAChE,SAAS,GAAG,YAAY;AAC9B,IAAA,IAAI,IAAI,CAACzqB,OAAO,CAACue,WAAW,EAAE;AAC5BkQ,MAAAA,KAAK,CAAClQ,WAAW,GAAG,IAAI,CAACve,OAAO,CAACue,WAAW;AAC9C,IAAA;AAEA,IAAA,IAAI,CAACxe,QAAQ,CAACsN,MAAM,CAACohB,KAAK,CAAC;IAC3B,IAAI,CAACkB,MAAM,GAAGlB,KAAK;AACrB,EAAA;AAEA6G,EAAAA,wBAAwBA,GAAG;IACzB,MAAMyB,aAAa,GAAG31B,cAAc,CAAC7L,IAAI,CAACg/B,aAAa,EAAE,IAAI,CAACx0B,QAAQ,CAAC;AACvE,IAAA,KAAK,MAAM01B,IAAI,IAAIsB,aAAa,EAAE;AAChC,MAAA,MAAM/jC,KAAK,GAAG,IAAI,CAAC8iC,aAAa,CAACL,IAAI,CAAC;AACtC,MAAA,IAAIziC,KAAK,EAAE;AACT,QAAA,IAAI,CAACkiC,MAAM,CAACtzB,IAAI,CAAC5O,KAAK,CAAC;AACvB,QAAA,IAAI,CAACgkC,UAAU,CAACvB,IAAI,CAAC;AACvB,MAAA;AACF,IAAA;AACF,EAAA;EAEAuB,UAAUA,CAACvB,IAAI,EAAE;AACf;AACAA,IAAAA,IAAI,CAAC18B,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;;AAElC;AACA,IAAA,IAAI,IAAI,CAACiH,OAAO,CAAC80B,WAAW,IAAI,CAAC1zB,cAAc,CAACE,OAAO,CAACkzB,qBAAqB,EAAEiB,IAAI,CAAC,EAAE;MACpFA,IAAI,CAACpoB,MAAM,CAAC,IAAI,CAAC4pB,oBAAoB,EAAE,CAAC;AAC1C,IAAA;AACF,EAAA;EAEAvB,WAAWA,CAAC1iC,KAAK,EAAE;AACjB,IAAA,MAAMyiC,IAAI,GAAG56B,QAAQ,CAACwkB,aAAa,CAAC,MAAM,CAAC;IAC3CoW,IAAI,CAAChL,SAAS,GAAGgK,eAAe;AAChCgB,IAAAA,IAAI,CAACp8B,OAAO,CAAC69B,WAAW,GAAGlkC,KAAK;;AAEhC;IACAyiC,IAAI,CAACpoB,MAAM,CAACxS,QAAQ,CAACs8B,cAAc,CAACnkC,KAAK,CAAC,CAAC;;AAE3C;AACA,IAAA,IAAI,CAACgkC,UAAU,CAACvB,IAAI,CAAC;AAErB,IAAA,OAAOA,IAAI;AACb,EAAA;AAEAwB,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAM7yB,MAAM,GAAGvJ,QAAQ,CAACwkB,aAAa,CAAC,QAAQ,CAAC;IAC/Cjb,MAAM,CAAC3P,IAAI,GAAG,QAAQ;IACtB2P,MAAM,CAACqmB,SAAS,GAAGiK,uBAAuB;AAC1CtwB,IAAAA,MAAM,CAACrL,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC3CqL,IAAAA,MAAM,CAACrL,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACrCqL,IAAAA,MAAM,CAACsmB,SAAS,GAAG,IAAI,CAAC1qB,OAAO,CAAC+0B,WAAW;AAC3C,IAAA,OAAO3wB,MAAM;AACf,EAAA;EAEAyxB,gBAAgBA,CAAC7iC,KAAK,EAAE;AACtB,IAAA,MAAMojC,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AACrC,IAAA,OAAOP,KAAK,CAAC7gC,IAAI,CAACkgC,IAAI,IAAI,IAAI,CAACK,aAAa,CAACL,IAAI,CAAC,KAAKziC,KAAK,CAAC;AAC/D,EAAA;EAEA8iC,aAAaA,CAACL,IAAI,EAAE;AAClB,IAAA,IAAIA,IAAI,CAACp8B,OAAO,CAAC69B,WAAW,EAAE;AAC5B,MAAA,OAAOzB,IAAI,CAACp8B,OAAO,CAAC69B,WAAW;AACjC,IAAA;AAEA,IAAA,MAAMvtB,KAAK,GAAG8rB,IAAI,CAACvoB,SAAS,CAAC,IAAI,CAAC;IAClC,MAAMkqB,OAAO,GAAGh2B,cAAc,CAACE,OAAO,CAACkzB,qBAAqB,EAAE7qB,KAAK,CAAC;AACpE,IAAA,IAAIytB,OAAO,EAAE;MACXA,OAAO,CAACnkC,MAAM,EAAE;AAClB,IAAA;IAEA,OAAO0W,KAAK,CAACuW,WAAW,EAAElf,IAAI,EAAE,IAAI,EAAE;AACxC,EAAA;AAEA4G,EAAAA,kBAAkBA,GAAG;AACnB;AACArT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,SAAS,EAAEx7B,KAAK,IAAI,IAAI,CAACkjC,mBAAmB,CAACljC,KAAK,CAAC,CAAC;AACjFI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,OAAO,EAAEx7B,KAAK,IAAI,IAAI,CAACy/B,YAAY,CAACz/B,KAAK,CAAC,CAAC;AACxEI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,OAAO,EAAEx7B,KAAK,IAAI,IAAI,CAACmjC,YAAY,CAACnjC,KAAK,CAAC,CAAC;AACxEI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC0G,cAAc,EAAE,CAAC;AAElE,IAAA,IAAI,IAAI,CAACr2B,OAAO,CAACg1B,YAAY,EAAE;MAC7BzgC,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE,MAAM,EAAEx7B,KAAK,IAAI;AAC5C;QACA,IAAI,CAACA,KAAK,CAAC6B,aAAa,EAAEiG,OAAO,CAACs4B,aAAa,CAAC,EAAE;UAChD,IAAI,CAACgD,oBAAoB,EAAE;AAC7B,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA;;AAEA;AACAhjC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,OAAO,EAAEw0B,aAAa,EAAEpgC,KAAK,IAAI;AAC9D;MACA,IAAIA,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACu4B,qBAAqB,CAAC,EAAE;AAC/C,QAAA;AACF,MAAA;MAEA,MAAMiB,IAAI,GAAGthC,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACs4B,aAAa,CAAC;AAChD,MAAA,IAAIkB,IAAI,EAAE;QACRthC,KAAK,CAACyO,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC0zB,UAAU,CAACb,IAAI,EAAE;AACpBe,UAAAA,cAAc,EAAEriC,KAAK,CAACqjC,OAAO,IAAIrjC,KAAK,CAACsjC,OAAO;UAC9ChB,WAAW,EAAEtiC,KAAK,CAACujC;AACrB,SAAC,CAAC;QACFjC,IAAI,CAACrnB,KAAK,EAAE;AACd,MAAA;AACF,IAAA,CAAC,CAAC;;AAEF;AACA7Z,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,OAAO,EAAEy0B,qBAAqB,EAAErgC,KAAK,IAAI;MACtEA,KAAK,CAACgmB,eAAe,EAAE;MACvB,MAAMsb,IAAI,GAAGthC,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACs4B,aAAa,CAAC;AAChD,MAAA,IAAIkB,IAAI,EAAE;AACR,QAAA,IAAI,CAACxiC,MAAM,CAACwiC,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC9F,MAAM,EAAEvhB,KAAK,EAAE;AACtB,MAAA;AACF,IAAA,CAAC,CAAC;;AAEF;AACA7Z,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,SAAS,EAAEw0B,aAAa,EAAEpgC,KAAK,IAAI;AAChE,MAAA,IAAI,CAACwjC,kBAAkB,CAACxjC,KAAK,CAAC;AAChC,IAAA,CAAC,CAAC;;AAEF;IACAI,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,OAAO,EAAE5L,KAAK,IAAI;AAC/C,MAAA,IAAIA,KAAK,CAACY,MAAM,KAAK,IAAI,CAACgL,QAAQ,EAAE;QAClC,IAAI,CAACs2B,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC1G,MAAM,EAAEvhB,KAAK,EAAE;AACtB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;EAEAipB,mBAAmBA,CAACljC,KAAK,EAAE;IACzB,MAAM;AAAE/B,MAAAA;AAAI,KAAC,GAAG+B,KAAK;AAErB,IAAA,QAAQ/B,GAAG;AACT,MAAA,KAAK,OAAO;AAAE,QAAA;UACZ+B,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAAC20B,oBAAoB,EAAE;AAC3B,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,QAAQ;AAAE,QAAA;AACb,UAAA,IAAI,IAAI,CAAC5H,MAAM,CAAC38B,KAAK,KAAK,EAAE,EAAE;YAC5BmB,KAAK,CAACyO,cAAc,EAAE;AACtB,YAAA,MAAMwzB,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AAErC,YAAA,IAAIP,KAAK,CAAC/+B,MAAM,GAAG,CAAC,EAAE;AACpB;cACA,MAAMugC,QAAQ,GAAGxB,KAAK,CAACjZ,EAAE,CAAC,EAAE,CAAC;AAC7B,cAAA,IAAI,CAACmZ,UAAU,CAACsB,QAAQ,CAAC;cACzBA,QAAQ,CAACxpB,KAAK,EAAE;AAClB,YAAA;AACF,UAAA;AAEA,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,WAAW;AAAE,QAAA;AAChB,UAAA,IAAI,IAAI,CAACuhB,MAAM,CAACqE,cAAc,KAAK,CAAC,IAAI,IAAI,CAACrE,MAAM,CAACkI,YAAY,KAAK,CAAC,EAAE;YACtE1jC,KAAK,CAACyO,cAAc,EAAE;AACtB,YAAA,MAAMwzB,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AACrC,YAAA,IAAIP,KAAK,CAAC/+B,MAAM,GAAG,CAAC,EAAE;cACpB,MAAMugC,QAAQ,GAAGxB,KAAK,CAACjZ,EAAE,CAAC,EAAE,CAAC;cAC7B,IAAIhpB,KAAK,CAACujC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAACpB,UAAU,CAACsB,QAAQ,EAAE;AAAEpB,kBAAAA,cAAc,EAAE;AAAK,iBAAC,CAAC;AACrD,cAAA,CAAC,MAAM;AACL,gBAAA,IAAI,CAACF,UAAU,CAACsB,QAAQ,CAAC;AAC3B,cAAA;cAEAA,QAAQ,CAACxpB,KAAK,EAAE;AAClB,YAAA;AACF,UAAA;AAEA,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;AACb,UAAA,IAAI,CAACuhB,MAAM,CAAC38B,KAAK,GAAG,EAAE;UACtB,IAAI,CAACqjC,cAAc,EAAE;AACrB,UAAA,IAAI,CAAC1G,MAAM,CAACmI,IAAI,EAAE;AAClB,UAAA;AACF,QAAA;;AAEA;AACF;AACF,EAAA;EAEAH,kBAAkBA,CAACxjC,KAAK,EAAE;IACxB,MAAM;AAAE/B,MAAAA;AAAI,KAAC,GAAG+B,KAAK;IACrB,MAAMshC,IAAI,GAAGthC,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACs4B,aAAa,CAAC;IAChD,IAAI,CAACkB,IAAI,EAAE;AACT,MAAA;AACF,IAAA;AAEA,IAAA,MAAMW,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AACrC,IAAA,MAAM1tB,YAAY,GAAGmtB,KAAK,CAAC93B,OAAO,CAACm3B,IAAI,CAAC;AAExC,IAAA,QAAQrjC,GAAG;AACT,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,QAAQ;AAAE,QAAA;UACb+B,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,IAAI,CAACm1B,iBAAiB,CAAC9uB,YAAY,EAAEmtB,KAAK,CAAC;AAC3C,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,WAAW;AAAE,QAAA;UAChBjiC,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,IAAI,CAACo1B,aAAa,CAAC5B,KAAK,EAAEntB,YAAY,EAAE,EAAE,EAAE9U,KAAK,CAACujC,QAAQ,CAAC;AAC3D,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,YAAY;AAAE,QAAA;UACjBvjC,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,IAAI,CAACo1B,aAAa,CAAC5B,KAAK,EAAEntB,YAAY,EAAE,CAAC,EAAE9U,KAAK,CAACujC,QAAQ,CAAC;AAC1D,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,MAAM;AAAE,QAAA;UACXvjC,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAACq1B,eAAe,CAAC7B,KAAK,EAAE,CAAC,EAAEjiC,KAAK,CAACujC,QAAQ,CAAC;AAC9C,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,KAAK;AAAE,QAAA;UACVvjC,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAACyzB,cAAc,EAAE;AACrB,UAAA,IAAI,CAAC1G,MAAM,EAAEvhB,KAAK,EAAE;AACpB,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,GAAG;AAAE,QAAA;AACR,UAAA,IAAI,CAAC8pB,gBAAgB,CAAC/jC,KAAK,EAAEiiC,KAAK,CAAC;AACnC,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;UACbjiC,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAACyzB,cAAc,EAAE;AACrB,UAAA,IAAI,CAAC1G,MAAM,EAAEvhB,KAAK,EAAE;AACpB,UAAA;AACF,QAAA;;AAEA;AACF;AACF,EAAA;AAEA2pB,EAAAA,iBAAiBA,CAAC9uB,YAAY,EAAEmtB,KAAK,EAAE;AACrC,IAAA,IAAI,IAAI,CAACjB,cAAc,CAAC1iC,IAAI,KAAK,CAAC,EAAE;AAClC,MAAA;AACF,IAAA;AAEA,IAAA,MAAM0lC,SAAS,GAAGz9B,IAAI,CAAC8D,GAAG,CAACyK,YAAY,EAAEmtB,KAAK,CAAC/+B,MAAM,GAAG,IAAI,CAAC89B,cAAc,CAAC1iC,IAAI,GAAG,CAAC,CAAC;IACrF,IAAI,CAACwjC,cAAc,EAAE;AAErB,IAAA,MAAMmC,cAAc,GAAG,IAAI,CAACzB,gBAAgB,EAAE;AAC9C,IAAA,IAAIyB,cAAc,CAAC/gC,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMghC,UAAU,GAAG39B,IAAI,CAAC6D,GAAG,CAAC,CAAC,EAAE7D,IAAI,CAAC8D,GAAG,CAAC25B,SAAS,EAAEC,cAAc,CAAC/gC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9E+gC,MAAAA,cAAc,CAACC,UAAU,CAAC,CAACjqB,KAAK,EAAE;AAClC,MAAA,IAAI,CAACkoB,UAAU,CAAC8B,cAAc,CAACC,UAAU,CAAC,CAAC;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAAC1I,MAAM,EAAEvhB,KAAK,EAAE;AACtB,IAAA;AACF,EAAA;EAEA4pB,aAAaA,CAAC5B,KAAK,EAAEntB,YAAY,EAAEE,SAAS,EAAEuuB,QAAQ,EAAE;AACtD,IAAA,MAAM3uB,WAAW,GAAGE,YAAY,GAAGE,SAAS;AAE5C,IAAA,IAAIA,SAAS,GAAG,CAAC,IAAIJ,WAAW,IAAI,CAAC,EAAE;AACrC,MAAA,MAAMuvB,UAAU,GAAGlC,KAAK,CAACrtB,WAAW,CAAC;AACrC,MAAA,IAAI,CAACutB,UAAU,CAACgC,UAAU,EAAEZ,QAAQ,GAAG;AAAElB,QAAAA,cAAc,EAAE,IAAI;AAAEC,QAAAA,WAAW,EAAE;OAAM,GAAG,EAAE,CAAC;MACxF6B,UAAU,CAAClqB,KAAK,EAAE;IACpB,CAAC,MAAM,IAAIjF,SAAS,GAAG,CAAC,IAAIJ,WAAW,GAAGqtB,KAAK,CAAC/+B,MAAM,EAAE;AACtD,MAAA,MAAMihC,UAAU,GAAGlC,KAAK,CAACrtB,WAAW,CAAC;AACrC,MAAA,IAAI,CAACutB,UAAU,CAACgC,UAAU,EAAEZ,QAAQ,GAAG;AAAElB,QAAAA,cAAc,EAAE,IAAI;AAAEC,QAAAA,WAAW,EAAE;OAAM,GAAG,EAAE,CAAC;MACxF6B,UAAU,CAAClqB,KAAK,EAAE;AACpB,IAAA,CAAC,MAAM,IAAIjF,SAAS,GAAG,CAAC,EAAE;MACxB,IAAI,CAACktB,cAAc,EAAE;AACrB,MAAA,IAAI,CAAC1G,MAAM,EAAEvhB,KAAK,EAAE;AACtB,IAAA;AACF,EAAA;AAEA6pB,EAAAA,eAAeA,CAAC7B,KAAK,EAAErtB,WAAW,EAAE2uB,QAAQ,EAAE;AAC5C,IAAA,IAAItB,KAAK,CAAC/+B,MAAM,KAAK,CAAC,EAAE;AACtB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMihC,UAAU,GAAGlC,KAAK,CAACrtB,WAAW,CAAC;AACrC,IAAA,IAAI,CAACutB,UAAU,CAACgC,UAAU,EAAEZ,QAAQ,GAAG;AAAEjB,MAAAA,WAAW,EAAE;KAAM,GAAG,EAAE,CAAC;IAClE6B,UAAU,CAAClqB,KAAK,EAAE;AACpB,EAAA;AAEA8pB,EAAAA,gBAAgBA,CAAC/jC,KAAK,EAAEiiC,KAAK,EAAE;IAC7B,IAAI,EAAEjiC,KAAK,CAACqjC,OAAO,IAAIrjC,KAAK,CAACsjC,OAAO,CAAC,EAAE;AACrC,MAAA;AACF,IAAA;IAEAtjC,KAAK,CAACyO,cAAc,EAAE;AACtB,IAAA,KAAK,MAAM21B,CAAC,IAAInC,KAAK,EAAE;AACrB,MAAA,IAAI,CAACjB,cAAc,CAAC5sB,GAAG,CAACgwB,CAAC,CAAC;AAC1BA,MAAAA,CAAC,CAACj8B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AACpC,IAAA;IAEAxP,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEq0B,YAAY,EAAE;AAChD3iB,MAAAA,QAAQ,EAAE,IAAI,CAAC0kB,iBAAiB;AAClC,KAAC,CAAC;AACJ,EAAA;EAEAvC,YAAYA,CAACz/B,KAAK,EAAE;IAClB,MAAM;AAAEnB,MAAAA;KAAO,GAAGmB,KAAK,CAACY,MAAM;IAC9B,MAAM;AAAE0wB,MAAAA;KAAW,GAAG,IAAI,CAACzlB,OAAO;IAElC,IAAIylB,SAAS,IAAIzyB,KAAK,CAAC+D,QAAQ,CAAC0uB,SAAS,CAAC,EAAE;AAC1C,MAAA,MAAMhT,KAAK,GAAGzf,KAAK,CAACsI,KAAK,CAACmqB,SAAS,CAAC;AACpC,MAAA,KAAK,MAAM7S,IAAI,IAAIH,KAAK,CAAClb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACrC,IAAI,CAACgR,GAAG,CAACqK,IAAI,CAAC5R,IAAI,EAAE,CAAC;AACvB,MAAA;MAEA,IAAI,CAAC2uB,MAAM,CAAC38B,KAAK,GAAGyf,KAAK,CAAC0K,EAAE,CAAC,EAAE,CAAC;AAClC,IAAA;AACF,EAAA;EAEAma,YAAYA,CAACnjC,KAAK,EAAE;IAClB,MAAM;AAAEsxB,MAAAA;KAAW,GAAG,IAAI,CAACzlB,OAAO;IAClC,IAAI,CAACylB,SAAS,EAAE;AACd,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+S,UAAU,GAAG,CAACrkC,KAAK,CAACskC,aAAa,IAAI1+B,MAAM,CAAC0+B,aAAa,EAAEC,OAAO,CAAC,MAAM,CAAC;AAChF,IAAA,IAAIF,UAAU,CAACzhC,QAAQ,CAAC0uB,SAAS,CAAC,EAAE;MAClCtxB,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,MAAM6P,KAAK,GAAG+lB,UAAU,CAACl9B,KAAK,CAACmqB,SAAS,CAAC;AACzC,MAAA,KAAK,MAAM7S,IAAI,IAAIH,KAAK,EAAE;QACxB,IAAI,CAAClK,GAAG,CAACqK,IAAI,CAAC5R,IAAI,EAAE,CAAC;AACvB,MAAA;AACF,IAAA;AACF,EAAA;AAEAu2B,EAAAA,oBAAoBA,GAAG;IACrB,MAAMvkC,KAAK,GAAG,IAAI,CAAC28B,MAAM,CAAC38B,KAAK,CAACgO,IAAI,EAAE;AACtC,IAAA,IAAIhO,KAAK,EAAE;AACT,MAAA,IAAI,CAACuV,GAAG,CAACvV,KAAK,CAAC;AACf,MAAA,IAAI,CAAC28B,MAAM,CAAC38B,KAAK,GAAG,EAAE;AACxB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAuB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,CAAA,gBAAA,EAAmBwF,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE,EAAE,MAAM;EAC7E,KAAK,MAAM3R,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC8+B,mBAAmB,CAAC,EAAE;AAC9DY,IAAAA,KAAK,CAACt0B,mBAAmB,CAACxO,OAAO,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;ACtnBF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMwmC,sBAAsB,GAAG,gBAAgB;AAExC,MAAMC,gBAAgB,GAAG;AAC9B;AACA,EAAA,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAED,sBAAsB,CAAC;EACnEE,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;AACrCC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNtG,EAAAA,CAAC,EAAE,EAAE;AACLuG,EAAAA,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AACzDC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,GAAG,EAAE,EAAE;AACPzL,EAAAA,MAAM,EAAE,EAAE;AACV0L,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,EAAE,EAAE;AACN,CAAC;AACD;;AAEA,MAAMC,aAAa,GAAG,IAAI/mC,GAAG,CAAC,CAC5B,YAAY,EACZ,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,YAAY,CACb,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,MAAMgnC,gBAAgB,GAAG,yDAAyD;AAElF,MAAMC,gBAAgB,GAAGA,CAACC,SAAS,EAAEC,oBAAoB,KAAK;EAC5D,MAAMC,aAAa,GAAGF,SAAS,CAACG,QAAQ,CAACriC,WAAW,EAAE;AAEtD,EAAA,IAAImiC,oBAAoB,CAAChkC,QAAQ,CAACikC,aAAa,CAAC,EAAE;AAChD,IAAA,IAAIL,aAAa,CAACroC,GAAG,CAAC0oC,aAAa,CAAC,EAAE;MACpC,OAAOvkC,OAAO,CAACmkC,gBAAgB,CAACl7B,IAAI,CAACo7B,SAAS,CAACI,SAAS,CAAC,CAAC;AAC5D,IAAA;AAEA,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;EACA,OAAOH,oBAAoB,CAACzhC,MAAM,CAAC6hC,cAAc,IAAIA,cAAc,YAAY17B,MAAM,CAAC,CACnF27B,IAAI,CAACC,KAAK,IAAIA,KAAK,CAAC37B,IAAI,CAACs7B,aAAa,CAAC,CAAC;AAC7C,CAAC;AAEM,SAASM,YAAYA,CAACC,UAAU,EAAEC,SAAS,EAAEC,gBAAgB,EAAE;AACpE,EAAA,IAAI,CAACF,UAAU,CAAClkC,MAAM,EAAE;AACtB,IAAA,OAAOkkC,UAAU;AACnB,EAAA;AAEA,EAAA,IAAIE,gBAAgB,IAAI,OAAOA,gBAAgB,KAAK,UAAU,EAAE;IAC9D,OAAOA,gBAAgB,CAACF,UAAU,CAAC;AACrC,EAAA;AAEA,EAAA,MAAMG,SAAS,GAAG,IAAI3hC,MAAM,CAAC4hC,SAAS,EAAE;EACxC,MAAMC,eAAe,GAAGF,SAAS,CAACG,eAAe,CAACN,UAAU,EAAE,WAAW,CAAC;AAC1E,EAAA,MAAMO,QAAQ,GAAG,CAAC,GAAGF,eAAe,CAAC3kB,IAAI,CAACniB,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAEhE,EAAA,KAAK,MAAM3C,OAAO,IAAI2pC,QAAQ,EAAE;IAC9B,MAAMC,WAAW,GAAG5pC,OAAO,CAAC8oC,QAAQ,CAACriC,WAAW,EAAE;AAElD,IAAA,IAAI,CAACtD,MAAM,CAAC1C,IAAI,CAAC4oC,SAAS,CAAC,CAACzkC,QAAQ,CAACglC,WAAW,CAAC,EAAE;MACjD5pC,OAAO,CAACc,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+oC,aAAa,GAAG,CAAC,GAAG7pC,OAAO,CAACgH,UAAU,CAAC;IAC7C,MAAM8iC,iBAAiB,GAAG,CAAC,IAAIT,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAIA,SAAS,CAACO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAExF,IAAA,KAAK,MAAMjB,SAAS,IAAIkB,aAAa,EAAE;AACrC,MAAA,IAAI,CAACnB,gBAAgB,CAACC,SAAS,EAAEmB,iBAAiB,CAAC,EAAE;AACnD9pC,QAAAA,OAAO,CAAC8G,eAAe,CAAC6hC,SAAS,CAACG,QAAQ,CAAC;AAC7C,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAOW,eAAe,CAAC3kB,IAAI,CAACyT,SAAS;AACvC;;ACnHA;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAM9rB,MAAI,GAAG,iBAAiB;AAE9B,MAAMF,SAAO,GAAG;AACd88B,EAAAA,SAAS,EAAE5C,gBAAgB;EAC3BsD,OAAO,EAAE,EAAE;AAAE;AACbC,EAAAA,UAAU,EAAE,EAAE;AACdC,EAAAA,IAAI,EAAE,KAAK;AACXC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,QAAQ,EAAE;AACZ,CAAC;AAED,MAAM59B,aAAW,GAAG;AAClB68B,EAAAA,SAAS,EAAE,QAAQ;AACnBU,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,UAAU,EAAE,mBAAmB;AAC/BC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,UAAU,EAAE,iBAAiB;AAC7BC,EAAAA,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,kBAAkB,GAAG;AACzBjyB,EAAAA,KAAK,EAAE,gCAAgC;AACvC3V,EAAAA,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;;AAEA,MAAM6nC,eAAe,SAASh+B,MAAM,CAAC;EACnCW,WAAWA,CAACL,MAAM,EAAE;AAClB,IAAA,KAAK,EAAE;IACP,IAAI,CAACiB,OAAO,GAAG,IAAI,CAAClB,UAAU,CAACC,MAAM,CAAC;AACxC,EAAA;;AAEA;EACA,WAAWL,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA89B,EAAAA,UAAUA,GAAG;IACX,OAAOpnC,MAAM,CAACxC,MAAM,CAAC,IAAI,CAACkN,OAAO,CAACk8B,OAAO,CAAC,CACvCj7B,GAAG,CAAClC,MAAM,IAAI,IAAI,CAAC49B,wBAAwB,CAAC59B,MAAM,CAAC,CAAC,CACpDzF,MAAM,CAAC7C,OAAO,CAAC;AACpB,EAAA;AAEAmmC,EAAAA,UAAUA,GAAG;IACX,OAAO,IAAI,CAACF,UAAU,EAAE,CAACrlC,MAAM,GAAG,CAAC;AACrC,EAAA;EAEAwlC,aAAaA,CAACX,OAAO,EAAE;AACrB,IAAA,IAAI,CAACY,aAAa,CAACZ,OAAO,CAAC;AAC3B,IAAA,IAAI,CAACl8B,OAAO,CAACk8B,OAAO,GAAG;AAAE,MAAA,GAAG,IAAI,CAACl8B,OAAO,CAACk8B,OAAO;MAAE,GAAGA;KAAS;AAC9D,IAAA,OAAO,IAAI;AACb,EAAA;AAEAa,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAMC,eAAe,GAAGniC,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;AACrD2d,IAAAA,eAAe,CAACtS,SAAS,GAAG,IAAI,CAACuS,cAAc,CAAC,IAAI,CAACj9B,OAAO,CAACu8B,QAAQ,CAAC;AAEtE,IAAA,KAAK,MAAM,CAAC3nC,QAAQ,EAAE2rB,IAAI,CAAC,IAAIjrB,MAAM,CAACwB,OAAO,CAAC,IAAI,CAACkJ,OAAO,CAACk8B,OAAO,CAAC,EAAE;MACnE,IAAI,CAACgB,WAAW,CAACF,eAAe,EAAEzc,IAAI,EAAE3rB,QAAQ,CAAC;AACnD,IAAA;AAEA,IAAA,MAAM2nC,QAAQ,GAAGS,eAAe,CAACz7B,QAAQ,CAAC,CAAC,CAAC;IAC5C,MAAM46B,UAAU,GAAG,IAAI,CAACQ,wBAAwB,CAAC,IAAI,CAAC38B,OAAO,CAACm8B,UAAU,CAAC;AAEzE,IAAA,IAAIA,UAAU,EAAE;AACdI,MAAAA,QAAQ,CAACjgC,SAAS,CAACiM,GAAG,CAAC,GAAG4zB,UAAU,CAAC7gC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,IAAA;AAEA,IAAA,OAAOihC,QAAQ;AACjB,EAAA;;AAEA;EACAr9B,gBAAgBA,CAACH,MAAM,EAAE;AACvB,IAAA,KAAK,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC9B,IAAA,IAAI,CAAC+9B,aAAa,CAAC/9B,MAAM,CAACm9B,OAAO,CAAC;AACpC,EAAA;EAEAY,aAAaA,CAACK,GAAG,EAAE;AACjB,IAAA,KAAK,MAAM,CAACvoC,QAAQ,EAAEsnC,OAAO,CAAC,IAAI5mC,MAAM,CAACwB,OAAO,CAACqmC,GAAG,CAAC,EAAE;MACrD,KAAK,CAACj+B,gBAAgB,CAAC;QAAEtK,QAAQ;AAAE2V,QAAAA,KAAK,EAAE2xB;OAAS,EAAEM,kBAAkB,CAAC;AAC1E,IAAA;AACF,EAAA;AAEAU,EAAAA,WAAWA,CAACX,QAAQ,EAAEL,OAAO,EAAEtnC,QAAQ,EAAE;IACvC,MAAMwoC,eAAe,GAAGh8B,cAAc,CAACE,OAAO,CAAC1M,QAAQ,EAAE2nC,QAAQ,CAAC;IAElE,IAAI,CAACa,eAAe,EAAE;AACpB,MAAA;AACF,IAAA;AAEAlB,IAAAA,OAAO,GAAG,IAAI,CAACS,wBAAwB,CAACT,OAAO,CAAC;IAEhD,IAAI,CAACA,OAAO,EAAE;MACZkB,eAAe,CAACnqC,MAAM,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,IAAIuI,WAAS,CAAC0gC,OAAO,CAAC,EAAE;MACtB,IAAI,CAACmB,qBAAqB,CAAC3hC,UAAU,CAACwgC,OAAO,CAAC,EAAEkB,eAAe,CAAC;AAChE,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACp9B,OAAO,CAACo8B,IAAI,EAAE;MACrBgB,eAAe,CAAC1S,SAAS,GAAG,IAAI,CAACuS,cAAc,CAACf,OAAO,CAAC;AACxD,MAAA;AACF,IAAA;IAEAkB,eAAe,CAACld,WAAW,GAAGgc,OAAO;AACvC,EAAA;EAEAe,cAAcA,CAACE,GAAG,EAAE;IAClB,OAAO,IAAI,CAACn9B,OAAO,CAACq8B,QAAQ,GAAGf,YAAY,CAAC6B,GAAG,EAAE,IAAI,CAACn9B,OAAO,CAACw7B,SAAS,EAAE,IAAI,CAACx7B,OAAO,CAACs8B,UAAU,CAAC,GAAGa,GAAG;AACzG,EAAA;EAEAR,wBAAwBA,CAACQ,GAAG,EAAE;IAC5B,OAAO//B,OAAO,CAAC+/B,GAAG,EAAE,CAAC7iC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,EAAA;AAEA+iC,EAAAA,qBAAqBA,CAAClrC,OAAO,EAAEirC,eAAe,EAAE;AAC9C,IAAA,IAAI,IAAI,CAACp9B,OAAO,CAACo8B,IAAI,EAAE;MACrBgB,eAAe,CAAC1S,SAAS,GAAG,EAAE;AAC9B0S,MAAAA,eAAe,CAAC/vB,MAAM,CAAClb,OAAO,CAAC;AAC/B,MAAA;AACF,IAAA;AAEAirC,IAAAA,eAAe,CAACld,WAAW,GAAG/tB,OAAO,CAAC+tB,WAAW;AACnD,EAAA;AACF;;AC7JA;AACA;AACA;AACA;AACA;AACA;;;AAyBA;AACA;AACA;;AAEA,MAAMthB,MAAI,GAAG,SAAS;AACtB,MAAM0+B,qBAAqB,GAAG,IAAI1pC,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAE9E,MAAM8f,UAAU,GAAG,QAAQ;AAE3B,MAAMnQ,iBAAe,GAAG,MAAM;AAC9B,MAAMg6B,gBAAgB,GAAG,OAAO;AAChC,MAAM/5B,iBAAe,GAAG,MAAM;AAE9B,MAAMg6B,sBAAsB,GAAG,gBAAgB;AAC/C,MAAMC,cAAc,GAAG,CAAA,CAAA,EAAIF,gBAAgB,CAAA,CAAE;AAC7C,MAAMv5B,sBAAoB,GAAG,4BAA4B;AAEzD,MAAM05B,gBAAgB,GAAG,eAAe;AAExC,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,cAAc,GAAG,QAAQ;AAE/B,MAAMruB,YAAU,GAAG,MAAM;AACzB,MAAMC,cAAY,GAAG,QAAQ;AAC7B,MAAMH,YAAU,GAAG,MAAM;AACzB,MAAMC,aAAW,GAAG,OAAO;AAC3B,MAAMuuB,cAAc,GAAG,UAAU;AACjC,MAAMC,aAAW,GAAG,OAAO;AAC3B,MAAMC,eAAa,GAAG,SAAS;AAC/B,MAAMC,gBAAc,GAAG,UAAU;AACjC,MAAMt5B,kBAAgB,GAAG,YAAY;AACrC,MAAMC,gBAAgB,GAAG,YAAY;AACrC,MAAMF,eAAa,GAAG,SAAS;AAE/B,MAAMw5B,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,KAAK,EAAEphC,OAAK,EAAE,GAAG,MAAM,GAAG,OAAO;AACjCqhC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,IAAI,EAAEthC,OAAK,EAAE,GAAG,OAAO,GAAG;AAC5B,CAAC;AAED,MAAMwB,SAAO,GAAG;AACd88B,EAAAA,SAAS,EAAE5C,gBAAgB;AAC3B6F,EAAAA,SAAS,EAAE,IAAI;AACfppB,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,SAAS,EAAE,KAAK;AAChBopB,EAAAA,WAAW,EAAE,EAAE;AACfC,EAAAA,KAAK,EAAE,CAAC;EACR9lB,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDujB,EAAAA,IAAI,EAAE,KAAK;AACXrqB,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACde,EAAAA,SAAS,EAAE,KAAK;AAChB0C,EAAAA,cAAc,EAAE,IAAI;AACpB6mB,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,UAAU,EAAE,IAAI;AAChB1nC,EAAAA,QAAQ,EAAE,KAAK;AACf2nC,EAAAA,QAAQ,EAAE,sCAAsC,GACtC,mCAAmC,GACnC,mCAAmC,GACnC,QAAQ;AAClBqC,EAAAA,KAAK,EAAE,EAAE;AACTnnC,EAAAA,OAAO,EAAE;AACX,CAAC;AAED,MAAMkH,aAAW,GAAG;AAClB68B,EAAAA,SAAS,EAAE,QAAQ;AACnBiD,EAAAA,SAAS,EAAE,SAAS;AACpBppB,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,SAAS,EAAE,0BAA0B;AACrCopB,EAAAA,WAAW,EAAE,mBAAmB;AAChCC,EAAAA,KAAK,EAAE,iBAAiB;AACxB9lB,EAAAA,kBAAkB,EAAE,OAAO;AAC3BujB,EAAAA,IAAI,EAAE,SAAS;AACfrqB,EAAAA,MAAM,EAAE,yBAAyB;AACjCe,EAAAA,SAAS,EAAE,mBAAmB;AAC9B0C,EAAAA,cAAc,EAAE,wBAAwB;AACxC6mB,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,UAAU,EAAE,iBAAiB;AAC7B1nC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5B2nC,EAAAA,QAAQ,EAAE,QAAQ;AAClBqC,EAAAA,KAAK,EAAE,2BAA2B;AAClCnnC,EAAAA,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;;AAEA,MAAMonC,OAAO,SAAS/+B,aAAa,CAAC;AAClCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,IAAI,OAAO6S,eAAe,KAAK,WAAW,EAAE;AAC1C,MAAA,MAAM,IAAIjS,SAAS,CAAC,qEAAqE,CAAC;AAC5F,IAAA;AAEA,IAAA,KAAK,CAACxN,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;IACA,IAAI,CAAC+/B,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;AACtB,IAAA,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,IAAI,CAACjpB,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACkpB,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACnpB,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,qBAAqB,GAAG,IAAI;;AAEjC;IACA,IAAI,CAACmpB,GAAG,GAAG,IAAI;IAEf,IAAI,CAACzoB,0BAA0B,EAAE;IACjC,IAAI,CAAC0oB,aAAa,EAAE;AAEpB,IAAA,IAAI,CAAC,IAAI,CAACt/B,OAAO,CAACpL,QAAQ,EAAE;MAC1B,IAAI,CAAC2qC,SAAS,EAAE;AAClB,IAAA;AACF,EAAA;;AAEA;EACA,WAAW7gC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA4gC,EAAAA,MAAMA,GAAG;IACP,IAAI,CAACV,UAAU,GAAG,IAAI;AACxB,EAAA;AAEAW,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACX,UAAU,GAAG,KAAK;AACzB,EAAA;AAEAY,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,CAACZ,UAAU,GAAG,CAAC,IAAI,CAACA,UAAU;AACpC,EAAA;AAEA36B,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,CAAC,IAAI,CAAC26B,UAAU,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACjuB,QAAQ,EAAE,EAAE;MACnB,IAAI,CAAC8uB,MAAM,EAAE;AACb,MAAA;AACF,IAAA;IAEA,IAAI,CAACC,MAAM,EAAE;AACf,EAAA;AAEAx/B,EAAAA,OAAOA,GAAG;AACR+O,IAAAA,YAAY,CAAC,IAAI,CAAC4vB,QAAQ,CAAC;IAE3B,IAAI,CAACc,qBAAqB,EAAE;AAE5BtrC,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuL,QAAQ,CAAC9D,OAAO,CAACwhC,cAAc,CAAC,EAAEC,gBAAgB,EAAE,IAAI,CAACoC,iBAAiB,CAAC;IAEjG,IAAI,IAAI,CAAC//B,QAAQ,CAACrG,YAAY,CAAC,wBAAwB,CAAC,EAAE;AACxD,MAAA,IAAI,CAACqG,QAAQ,CAAChH,YAAY,CAAC,OAAO,EAAE,IAAI,CAACgH,QAAQ,CAACrG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAC3F,IAAA;IAEA,IAAI,CAAC0d,gBAAgB,EAAE;IACvB,IAAI,CAACE,2BAA2B,EAAE;IAClC,KAAK,CAAClX,OAAO,EAAE;AACjB,EAAA;EAEA,MAAM2Q,IAAIA,GAAG;IACX,IAAI,IAAI,CAAChR,QAAQ,CAAC6J,KAAK,CAAC2L,OAAO,KAAK,MAAM,EAAE;AAC1C,MAAA,MAAM,IAAI1W,KAAK,CAAC,qCAAqC,CAAC;AACxD,IAAA;IAEA,IAAI,EAAE,IAAI,CAACkhC,cAAc,EAAE,IAAI,IAAI,CAACjB,UAAU,CAAC,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,MAAMhoB,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC2O,YAAU,CAAC,CAAC;AAC7F,IAAA,MAAMywB,UAAU,GAAGvjC,cAAc,CAAC,IAAI,CAACsD,QAAQ,CAAC;AAChD,IAAA,MAAMkgC,UAAU,GAAG,CAACD,UAAU,IAAI,IAAI,CAACjgC,QAAQ,CAACmgC,aAAa,CAACxjC,eAAe,EAAEzG,QAAQ,CAAC,IAAI,CAAC8J,QAAQ,CAAC;AAEtG,IAAA,IAAI+W,SAAS,CAAClT,gBAAgB,IAAI,CAACq8B,UAAU,EAAE;AAC7C,MAAA;AACF,IAAA;IAEA,IAAI,CAAC7oB,gBAAgB,EAAE;AAEvB,IAAA,MAAMioB,GAAG,GAAG,IAAI,CAACc,cAAc,EAAE;AAEjC,IAAA,IAAI,CAACpgC,QAAQ,CAAChH,YAAY,CAAC,kBAAkB,EAAEsmC,GAAG,CAAC3lC,YAAY,CAAC,IAAI,CAAC,CAAC;IAEtE,IAAI;AAAE4b,MAAAA;KAAW,GAAG,IAAI,CAACtV,OAAO;IAChC,MAAMogC,aAAa,GAAG,IAAI,CAACrgC,QAAQ,CAAC9D,OAAO,CAAC,cAAc,CAAC;AAC3D,IAAA,IAAImkC,aAAa,IAAI9qB,SAAS,KAAKza,QAAQ,CAACoc,IAAI,EAAE;AAChD3B,MAAAA,SAAS,GAAG8qB,aAAa;AAC3B,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACrgC,QAAQ,CAACmgC,aAAa,CAACxjC,eAAe,CAACzG,QAAQ,CAAC,IAAI,CAACopC,GAAG,CAAC,EAAE;AACnE/pB,MAAAA,SAAS,CAACjI,MAAM,CAACgyB,GAAG,CAAC;AACrB9qC,MAAAA,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAACm9B,cAAc,CAAC,CAAC;AACjF,IAAA;AAEA,IAAA,MAAM,IAAI,CAAC/mB,eAAe,CAACqoB,GAAG,CAAC;AAE/BA,IAAAA,GAAG,CAAC/iC,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;;AAElC;IACA,IAAI,CAAC68B,kBAAkB,EAAE;;AAEzB;AACA;AACA;AACA;AACA,IAAA,IAAI,cAAc,IAAIxlC,QAAQ,CAAC6B,eAAe,EAAE;MAC9C,KAAK,MAAMvK,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACyC,EAAE,CAAC7E,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;IAEA,MAAMuU,QAAQ,GAAGA,MAAM;AACrB/c,MAAAA,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC4O,aAAW,CAAC,CAAC;AAE5E,MAAA,IAAI,IAAI,CAACwvB,UAAU,KAAK,KAAK,EAAE;QAC7B,IAAI,CAACW,MAAM,EAAE;AACf,MAAA;MAEA,IAAI,CAACX,UAAU,GAAG,KAAK;IACzB,CAAC;AAED,IAAA,IAAI,CAACx+B,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAAC+tB,GAAG,EAAE,IAAI,CAAC3Y,WAAW,EAAE,CAAC;AAC7D,EAAA;AAEA5V,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+G,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC6O,YAAU,CAAC,CAAC;IAC7F,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACi8B,qBAAqB,EAAE;AAE5B,IAAA,MAAMR,GAAG,GAAG,IAAI,CAACc,cAAc,EAAE;AACjCd,IAAAA,GAAG,CAAC/iC,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;;AAErC;AACA;AACA,IAAA,IAAI,cAAc,IAAI3I,QAAQ,CAAC6B,eAAe,EAAE;MAC9C,KAAK,MAAMvK,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACkiC,cAAc,CAACpB,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACoB,cAAc,CAACrB,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACqB,cAAc,CAACtB,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACqB,UAAU,GAAG,IAAI,CAAA;;IAEtB,MAAM1tB,QAAQ,GAAGA,MAAM;AACrB,MAAA,IAAI,IAAI,CAACgvB,oBAAoB,EAAE,EAAE;AAC/B,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC,IAAI,CAACtB,UAAU,EAAE;QACpB,IAAI,CAAC5nB,gBAAgB,EAAE;AACzB,MAAA;AAEA,MAAA,IAAI,CAACrX,QAAQ,CAAC9G,eAAe,CAAC,kBAAkB,CAAC;AACjD1E,MAAAA,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC8O,cAAY,CAAC,CAAC;IAC/E,CAAC;AAED,IAAA,IAAI,CAAClP,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAAC+tB,GAAG,EAAE,IAAI,CAAC3Y,WAAW,EAAE,CAAC;AAC7D,EAAA;AAEAjP,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAACzB,gBAAgB,IAAI,IAAI,CAACqpB,GAAG,EAAE;MACrC,IAAI,CAAC3nB,uBAAuB,EAAE;AAChC,IAAA;AACF,EAAA;;AAEA;AACAqoB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAOtpC,OAAO,CAAC,IAAI,CAAC8pC,SAAS,EAAE,CAAC;AAClC,EAAA;AAEAJ,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,CAAC,IAAI,CAACd,GAAG,EAAE;AACb,MAAA,IAAI,CAACA,GAAG,GAAG,IAAI,CAACmB,iBAAiB,CAAC,IAAI,CAACpB,WAAW,IAAI,IAAI,CAACqB,sBAAsB,EAAE,CAAC;AACtF,IAAA;IAEA,OAAO,IAAI,CAACpB,GAAG;AACjB,EAAA;EAEAmB,iBAAiBA,CAACtE,OAAO,EAAE;IACzB,MAAMmD,GAAG,GAAG,IAAI,CAACqB,mBAAmB,CAACxE,OAAO,CAAC,CAACa,MAAM,EAAE;IAEtDsC,GAAG,CAAC/iC,SAAS,CAACrJ,MAAM,CAACsQ,iBAAe,EAAEC,iBAAe,CAAC;AACtD67B,IAAAA,GAAG,CAAC/iC,SAAS,CAACiM,GAAG,CAAC,CAAA,GAAA,EAAM,IAAI,CAACnJ,WAAW,CAACR,IAAI,CAAA,KAAA,CAAO,CAAC;AAErD,IAAA,MAAM+hC,KAAK,GAAGnmC,MAAM,CAAC,IAAI,CAAC4E,WAAW,CAACR,IAAI,CAAC,CAACtG,QAAQ,EAAE;AAEtD+mC,IAAAA,GAAG,CAACtmC,YAAY,CAAC,IAAI,EAAE4nC,KAAK,CAAC;AAE7B,IAAA,IAAI,IAAI,CAACja,WAAW,EAAE,EAAE;AACtB2Y,MAAAA,GAAG,CAAC/iC,SAAS,CAACiM,GAAG,CAAChF,iBAAe,CAAC;AACpC,IAAA;AAEA,IAAA,OAAO87B,GAAG;AACZ,EAAA;EAEAuB,UAAUA,CAAC1E,OAAO,EAAE;IAClB,IAAI,CAACkD,WAAW,GAAGlD,OAAO;AAC1B,IAAA,IAAI,IAAI,CAACrrB,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACuG,gBAAgB,EAAE;MACvB,IAAI,CAACrG,IAAI,EAAE;AACb,IAAA;AACF,EAAA;EAEA2vB,mBAAmBA,CAACxE,OAAO,EAAE;IAC3B,IAAI,IAAI,CAACiD,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAACtC,aAAa,CAACX,OAAO,CAAC;AAC9C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACiD,gBAAgB,GAAG,IAAI1C,eAAe,CAAC;QAC1C,GAAG,IAAI,CAACz8B,OAAO;AACf;AACA;QACAk8B,OAAO;QACPC,UAAU,EAAE,IAAI,CAACQ,wBAAwB,CAAC,IAAI,CAAC38B,OAAO,CAAC0+B,WAAW;AACpE,OAAC,CAAC;AACJ,IAAA;IAEA,OAAO,IAAI,CAACS,gBAAgB;AAC9B,EAAA;AAEAsB,EAAAA,sBAAsBA,GAAG;IACvB,OAAO;AACL,MAAA,CAACjD,sBAAsB,GAAG,IAAI,CAAC+C,SAAS;KACzC;AACH,EAAA;AAEAA,EAAAA,SAASA,GAAG;AACV,IAAA,OAAO,IAAI,CAAC5D,wBAAwB,CAAC,IAAI,CAAC38B,OAAO,CAAC4+B,KAAK,CAAC,IAAI,IAAI,CAAC7+B,QAAQ,CAACrG,YAAY,CAAC,wBAAwB,CAAC;AAClH,EAAA;;AAEA;EACAmnC,4BAA4BA,CAAC1sC,KAAK,EAAE;AAClC,IAAA,OAAO,IAAI,CAACiL,WAAW,CAACuB,mBAAmB,CAACxM,KAAK,CAACE,cAAc,EAAE,IAAI,CAACysC,kBAAkB,EAAE,CAAC;AAC9F,EAAA;AAEApa,EAAAA,WAAWA,GAAG;AACZ,IAAA,OAAO,IAAI,CAAC1mB,OAAO,CAACy+B,SAAS,IAAK,IAAI,CAACY,GAAG,IAAI,IAAI,CAACA,GAAG,CAAC/iC,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAE;AAC7F,EAAA;AAEAsN,EAAAA,QAAQA,GAAG;AACT,IAAA,OAAO,IAAI,CAACwuB,GAAG,IAAI,IAAI,CAACA,GAAG,CAAC/iC,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACjE,EAAA;EAEAuU,aAAaA,CAACsnB,GAAG,EAAE;AACjB;IACA,IAAI,IAAI,CAACnpB,qBAAqB,EAAE;MAC9B,MAAMpD,SAAS,GAAGC,sBAAsB,CAAC,IAAI,CAACmD,qBAAqB,EAAE,KAAK,CAAC;MAC3E,OAAOioB,aAAa,CAACrrB,SAAS,CAAClT,WAAW,EAAE,CAAC,IAAIkT,SAAS;AAC5D,IAAA;;AAEA;AACA,IAAA,MAAMA,SAAS,GAAG1V,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAAC8S,SAAS,EAAE,CAAC,IAAI,EAAEusB,GAAG,EAAE,IAAI,CAACt/B,QAAQ,CAAC,CAAC;IAC7E,OAAOo+B,aAAa,CAACrrB,SAAS,CAAClT,WAAW,EAAE,CAAC,IAAIkT,SAAS;AAC5D,EAAA;AAEA8D,EAAAA,0BAA0BA,GAAG;AAC3B;IACA,IAAI,OAAO,IAAI,CAAC5W,OAAO,CAAC8S,SAAS,KAAK,QAAQ,EAAE;MAC9C,IAAI,CAACoD,qBAAqB,GAAG,IAAI;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,qBAAqB,GAAG5D,wBAAwB,CAAC,IAAI,CAACtS,OAAO,CAAC8S,SAAS,EAAE,KAAK,CAAC;IAEpF,IAAI,IAAI,CAACoD,qBAAqB,EAAE;MAC9B,IAAI,CAACkC,yBAAyB,EAAE;AAClC,IAAA;AACF,EAAA;AAEAA,EAAAA,yBAAyBA,GAAG;IAC1B,IAAI,CAACd,2BAA2B,EAAE;AAClC,IAAA,IAAI,CAACrB,oBAAoB,GAAG3C,yBAAyB,CAAC,MAAM;AAC1D,MAAA,IAAI,IAAI,CAACzC,QAAQ,EAAE,EAAE;QACnB,IAAI,CAAC6G,uBAAuB,EAAE;AAChC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAJ,EAAAA,2BAA2BA,GAAG;AAC5B7D,IAAAA,0BAA0B,CAAC,IAAI,CAACwC,oBAAoB,CAAC;IACrD,IAAI,CAACA,oBAAoB,GAAG,EAAE;AAChC,EAAA;EAEA,MAAMe,eAAeA,CAACqoB,GAAG,EAAE;AACzB,IAAA,MAAMvsB,SAAS,GAAG,IAAI,CAACiF,aAAa,CAACsnB,GAAG,CAAC;AACzC,IAAA,MAAM0B,YAAY,GAAG1B,GAAG,CAAC1jC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAACyD,WAAW,CAACR,IAAI,QAAQ,CAAC;;AAEzE;IACA,MAAM,IAAI,CAAC8Y,uBAAuB,CAAC2nB,GAAG,EAAEvsB,SAAS,EAAEiuB,YAAY,CAAC;;AAEhE;IACA,IAAI,CAAC/qB,gBAAgB,GAAG8B,UAAU,CAChC,IAAI,CAAC/X,QAAQ,EACbs/B,GAAG,EACH,MAAM,IAAI,CAAC3nB,uBAAuB,CAAC2nB,GAAG,EAAE,IAAI,EAAE0B,YAAY,CAC5D,CAAC;AACH,EAAA;AAEA,EAAA,MAAMrpB,uBAAuBA,CAAC2nB,GAAG,GAAG,IAAI,CAACA,GAAG,EAAEvsB,SAAS,GAAG,IAAI,EAAEiuB,YAAY,GAAG,IAAI,EAAE;IACnF,IAAI,CAAC1B,GAAG,EAAE;AACR,MAAA;AACF,IAAA;IAEA,IAAI,CAACvsB,SAAS,EAAE;AACdA,MAAAA,SAAS,GAAG,IAAI,CAACiF,aAAa,CAACsnB,GAAG,CAAC;AACrC,IAAA;IAEA,IAAI,CAAC0B,YAAY,EAAE;AACjBA,MAAAA,YAAY,GAAG1B,GAAG,CAAC1jC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAACyD,WAAW,CAACR,IAAI,CAAA,MAAA,CAAQ,CAAC;AACrE,IAAA;AAEA,IAAA,MAAMoZ,UAAU,GAAG,IAAI,CAACC,sBAAsB,CAAC8oB,YAAY,CAAC;IAC5D,MAAMvrB,cAAc,GAAG,IAAI,CAAC0C,kBAAkB,CAACpF,SAAS,EAAEkF,UAAU,CAAC;IAErE,MAAM;MAAE9C,CAAC;MAAEC,CAAC;AAAErC,MAAAA,SAAS,EAAEsG,cAAc;AAAE4nB,MAAAA;KAAgB,GAAG,MAAMpvB,eAAe,CAC/E,IAAI,CAAC7R,QAAQ,EACbs/B,GAAG,EACH7pB,cACF,CAAC;;AAED;AACAlgB,IAAAA,MAAM,CAAC+jB,MAAM,CAACgmB,GAAG,CAACz1B,KAAK,EAAE;AACvB0P,MAAAA,QAAQ,EAAE,UAAU;MACpB7N,IAAI,EAAE,CAAA,EAAGyJ,CAAC,CAAA,EAAA,CAAI;MACdzH,GAAG,EAAE,GAAG0H,CAAC,CAAA,EAAA;AACX,KAAC,CAAC;;AAEF;AACA,IAAA,IAAI4rB,YAAY,EAAE;AAChBA,MAAAA,YAAY,CAACn3B,KAAK,CAAC0P,QAAQ,GAAG,UAAU;AAC1C,IAAA;;AAEA;IACAzgB,WAAW,CAACC,gBAAgB,CAACumC,GAAG,EAAE,WAAW,EAAEjmB,cAAc,CAAC;;AAE9D;AACA;AACA,IAAA,IAAI2nB,YAAY,IAAIC,cAAc,CAACnvB,KAAK,EAAE;MACxC,MAAM;AAAEqD,QAAAA,CAAC,EAAE+rB,MAAM;AAAE9rB,QAAAA,CAAC,EAAE+rB;OAAQ,GAAGF,cAAc,CAACnvB,KAAK;AACrD,MAAA,MAAMsvB,UAAU,GAAG/nB,cAAc,CAAChiB,UAAU,CAAC,KAAK,CAAC,IAAIgiB,cAAc,CAAChiB,UAAU,CAAC,QAAQ,CAAC;;AAE1F;AACA;AACA9B,MAAAA,MAAM,CAAC+jB,MAAM,CAAC0nB,YAAY,CAACn3B,KAAK,EAAE;QAChC6B,IAAI,EAAE01B,UAAU,IAAIF,MAAM,KAAK,IAAI,GAAG,CAAA,EAAGA,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE;AACxDxzB,QAAAA,GAAG,EAAE,CAAC0zB,UAAU,IAAID,MAAM,KAAK,IAAI,GAAG,CAAA,EAAGA,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE;AACxD;AACAt0B,QAAAA,KAAK,EAAE,EAAE;AACToM,QAAAA,MAAM,EAAE;AACV,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEAX,EAAAA,UAAUA,GAAG;IACX,MAAM;AAAEtG,MAAAA;KAAQ,GAAG,IAAI,CAAC/R,OAAO;AAE/B,IAAA,IAAI,OAAO+R,MAAM,KAAK,QAAQ,EAAE;AAC9B,MAAA,OAAOA,MAAM,CAACzW,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACjO,KAAK,IAAIqF,MAAM,CAACsQ,QAAQ,CAAC3V,KAAK,EAAE,EAAE,CAAC,CAAC;AACnE,IAAA;AAEA,IAAA,IAAI,OAAO+e,MAAM,KAAK,UAAU,EAAE;AAChC;AACA,MAAA,OAAO,CAAC;QAAEe,SAAS;AAAEyF,QAAAA;AAAM,OAAC,KAAK;QAC/B,MAAMC,MAAM,GAAGzG,MAAM,CAAC;UAAEe,SAAS;UAAE4C,SAAS,EAAE6C,KAAK,CAAC7C,SAAS;UAAE+C,QAAQ,EAAEF,KAAK,CAACE;AAAS,SAAC,EAAE,IAAI,CAAC1Y,QAAQ,CAAC;AACzG,QAAA,OAAOyY,MAAM;MACf,CAAC;AACH,IAAA;AAEA,IAAA,OAAOzG,MAAM;AACf,EAAA;EAEA4qB,wBAAwBA,CAACQ,GAAG,EAAE;AAC5B,IAAA,OAAO//B,OAAO,CAAC+/B,GAAG,EAAE,CAAC,IAAI,CAACp9B,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,CAAC;AACrD,EAAA;EAEAkY,sBAAsBA,CAAC8oB,YAAY,EAAE;AACnC,IAAA,MAAMroB,WAAW,GAAG,IAAI,CAACL,UAAU,EAAE;AAErC,IAAA,MAAML,UAAU,GAAG;AACjB;AACAjG,IAAAA,MAAM,CACJ,OAAO2G,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;AACA5G,IAAAA,IAAI,CAAC;AACH+G,MAAAA,kBAAkB,EAAE,IAAI,CAAC7Y,OAAO,CAAC6Y;AACnC,KAAC,CAAC;AACF;AACA7G,IAAAA,KAAK,CAAC;AACJqD,MAAAA,QAAQ,EAAE,IAAI,CAACrV,OAAO,CAACqV,QAAQ,KAAK,iBAAiB,GAAG,mBAAmB,GAAG,IAAI,CAACrV,OAAO,CAACqV;AAC7F,KAAC,CAAC,CACH;;AAED;AACA,IAAA,IAAI0rB,YAAY,EAAE;AAChB/oB,MAAAA,UAAU,CAACpW,IAAI,CAACiQ,KAAK,CAAC;AAAE1f,QAAAA,OAAO,EAAE4uC;AAAa,OAAC,CAAC,CAAC;AACnD,IAAA;AAEA,IAAA,OAAO/oB,UAAU;AACnB,EAAA;AAEAE,EAAAA,kBAAkBA,CAACpF,SAAS,EAAEkF,UAAU,EAAE;AACxC,IAAA,MAAMiB,aAAa,GAAG;MACpBnG,SAAS;AACTkF,MAAAA;KACD;IAED,OAAO;AACL,MAAA,GAAGiB,aAAa;AAChB,MAAA,GAAG7b,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAACwV,cAAc,EAAE,CAAClb,SAAS,EAAE2e,aAAa,CAAC;KACnE;AACH,EAAA;AAEAqmB,EAAAA,aAAaA,GAAG;IACd,MAAM8B,QAAQ,GAAG,IAAI,CAACphC,OAAO,CAACvI,OAAO,CAAC6D,KAAK,CAAC,GAAG,CAAC;AAEhD,IAAA,KAAK,MAAM7D,OAAO,IAAI2pC,QAAQ,EAAE;MAC9B,IAAI3pC,OAAO,KAAK,OAAO,EAAE;QACvBlD,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAACo9B,aAAW,CAAC,EAAE,IAAI,CAACh+B,OAAO,CAACpL,QAAQ,EAAET,KAAK,IAAI;AACtG,UAAA,MAAM8tB,OAAO,GAAG,IAAI,CAAC4e,4BAA4B,CAAC1sC,KAAK,CAAC;AACxD8tB,UAAAA,OAAO,CAACgd,cAAc,CAACpB,aAAa,CAAC,GAAG,EAAE5b,OAAO,CAACpR,QAAQ,EAAE,IAAIoR,OAAO,CAACgd,cAAc,CAACpB,aAAa,CAAC,CAAC;UACtG5b,OAAO,CAAC9d,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACJ,MAAA,CAAC,MAAM,IAAI1M,OAAO,KAAKqmC,cAAc,EAAE;QACrC,MAAMuD,OAAO,GAAG5pC,OAAO,KAAKkmC,aAAa,GACvC,IAAI,CAACv+B,WAAW,CAACwB,SAAS,CAACgE,kBAAgB,CAAC,GAC5C,IAAI,CAACxF,WAAW,CAACwB,SAAS,CAACq9B,eAAa,CAAC;QAC3C,MAAMqD,QAAQ,GAAG7pC,OAAO,KAAKkmC,aAAa,GACxC,IAAI,CAACv+B,WAAW,CAACwB,SAAS,CAACiE,gBAAgB,CAAC,GAC5C,IAAI,CAACzF,WAAW,CAACwB,SAAS,CAACs9B,gBAAc,CAAC;AAE5C3pC,QAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEshC,OAAO,EAAE,IAAI,CAACrhC,OAAO,CAACpL,QAAQ,EAAET,KAAK,IAAI;AACtE,UAAA,MAAM8tB,OAAO,GAAG,IAAI,CAAC4e,4BAA4B,CAAC1sC,KAAK,CAAC;AACxD8tB,UAAAA,OAAO,CAACgd,cAAc,CAAC9qC,KAAK,CAACM,IAAI,KAAK,SAAS,GAAGmpC,aAAa,GAAGD,aAAa,CAAC,GAAG,IAAI;UACvF1b,OAAO,CAAC2d,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACFrrC,QAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEuhC,QAAQ,EAAE,IAAI,CAACthC,OAAO,CAACpL,QAAQ,EAAET,KAAK,IAAI;AACvE,UAAA,MAAM8tB,OAAO,GAAG,IAAI,CAAC4e,4BAA4B,CAAC1sC,KAAK,CAAC;UACxD8tB,OAAO,CAACgd,cAAc,CAAC9qC,KAAK,CAACM,IAAI,KAAK,UAAU,GAAGmpC,aAAa,GAAGD,aAAa,CAAC,GAC/E1b,OAAO,CAACliB,QAAQ,CAAC9J,QAAQ,CAAC9B,KAAK,CAAC6B,aAAa,CAAC;UAEhDisB,OAAO,CAAC0d,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACJ,MAAA;AACF,IAAA;IAEA,IAAI,CAACG,iBAAiB,GAAG,MAAM;MAC7B,IAAI,IAAI,CAAC//B,QAAQ,EAAE;QACjB,IAAI,CAAC+Q,IAAI,EAAE;AACb,MAAA;IACF,CAAC;AAEDvc,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,CAAC9D,OAAO,CAACwhC,cAAc,CAAC,EAAEC,gBAAgB,EAAE,IAAI,CAACoC,iBAAiB,CAAC;AAClG,EAAA;AAEAO,EAAAA,kBAAkBA,GAAG;IACnB,IAAI,IAAI,CAACnB,eAAe,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,eAAe,GAAG/qC,KAAK,IAAI;AAC9B,MAAA,IAAIA,KAAK,CAAC/B,GAAG,KAAKshB,UAAU,IAAI,CAAC,IAAI,CAAC7C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAACwuB,GAAG,CAAClmB,WAAW,EAAE;AACzE,QAAA;AACF,MAAA;;AAEA;AACA;AACA;AACA;MACAhlB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MACvB,IAAI,CAACrJ,IAAI,EAAE;IACb,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC/Q,QAAQ,CAACmgC,aAAa,CAAC5pC,gBAAgB,CAACqO,eAAa,EAAE,IAAI,CAACu6B,eAAe,EAAE,IAAI,CAAC;AACzF,EAAA;AAEAW,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,IAAI,CAAC,IAAI,CAACX,eAAe,EAAE;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACn/B,QAAQ,CAACmgC,aAAa,CAAC1pC,mBAAmB,CAACmO,eAAa,EAAE,IAAI,CAACu6B,eAAe,EAAE,IAAI,CAAC;IAC1F,IAAI,CAACA,eAAe,GAAG,IAAI;AAC7B,EAAA;AAEAK,EAAAA,SAASA,GAAG;IACV,MAAMX,KAAK,GAAG,IAAI,CAAC7+B,QAAQ,CAACrG,YAAY,CAAC,OAAO,CAAC;IAEjD,IAAI,CAACklC,KAAK,EAAE;AACV,MAAA;AACF,IAAA;IAEA,IAAI,CAAC,IAAI,CAAC7+B,QAAQ,CAACrG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAACqG,QAAQ,CAACmgB,WAAW,CAAClf,IAAI,EAAE,EAAE;MAClF,IAAI,CAACjB,QAAQ,CAAChH,YAAY,CAAC,YAAY,EAAE6lC,KAAK,CAAC;AACjD,IAAA;IAEA,IAAI,CAAC7+B,QAAQ,CAAChH,YAAY,CAAC,wBAAwB,EAAE6lC,KAAK,CAAC,CAAA;AAC3D,IAAA,IAAI,CAAC7+B,QAAQ,CAAC9G,eAAe,CAAC,OAAO,CAAC;AACxC,EAAA;AAEA2mC,EAAAA,MAAMA,GAAG;IACP,IAAI,IAAI,CAAC/uB,QAAQ,EAAE,IAAI,IAAI,CAACmuB,UAAU,EAAE;MACtC,IAAI,CAACA,UAAU,GAAG,IAAI;AACtB,MAAA;AACF,IAAA;IAEA,IAAI,CAACA,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACuC,WAAW,CAAC,MAAM;MACrB,IAAI,IAAI,CAACvC,UAAU,EAAE;QACnB,IAAI,CAACjuB,IAAI,EAAE;AACb,MAAA;IACF,CAAC,EAAE,IAAI,CAAC/Q,OAAO,CAAC2+B,KAAK,CAAC5tB,IAAI,CAAC;AAC7B,EAAA;AAEA4uB,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAACW,oBAAoB,EAAE,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAACtB,UAAU,GAAG,KAAK;IAEvB,IAAI,CAACuC,WAAW,CAAC,MAAM;AACrB,MAAA,IAAI,CAAC,IAAI,CAACvC,UAAU,EAAE;QACpB,IAAI,CAACluB,IAAI,EAAE;AACb,MAAA;IACF,CAAC,EAAE,IAAI,CAAC9Q,OAAO,CAAC2+B,KAAK,CAAC7tB,IAAI,CAAC;AAC7B,EAAA;AAEAywB,EAAAA,WAAWA,CAACrtC,OAAO,EAAEstC,OAAO,EAAE;AAC5BryB,IAAAA,YAAY,CAAC,IAAI,CAAC4vB,QAAQ,CAAC;IAC3B,IAAI,CAACA,QAAQ,GAAGjhC,UAAU,CAAC5J,OAAO,EAAEstC,OAAO,CAAC;AAC9C,EAAA;AAEAlB,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAOhrC,MAAM,CAACxC,MAAM,CAAC,IAAI,CAACmsC,cAAc,CAAC,CAACloC,QAAQ,CAAC,IAAI,CAAC;AAC1D,EAAA;EAEA+H,UAAUA,CAACC,MAAM,EAAE;IACjB,MAAM0iC,cAAc,GAAG5oC,WAAW,CAACK,iBAAiB,CAAC,IAAI,CAAC6G,QAAQ,CAAC;IAEnE,KAAK,MAAM2hC,aAAa,IAAIpsC,MAAM,CAAC1C,IAAI,CAAC6uC,cAAc,CAAC,EAAE;AACvD,MAAA,IAAInE,qBAAqB,CAAChrC,GAAG,CAACovC,aAAa,CAAC,EAAE;QAC5C,OAAOD,cAAc,CAACC,aAAa,CAAC;AACtC,MAAA;AACF,IAAA;AAEA3iC,IAAAA,MAAM,GAAG;AACP,MAAA,GAAG0iC,cAAc;MACjB,IAAI,OAAO1iC,MAAM,KAAK,QAAQ,IAAIA,MAAM,GAAGA,MAAM,GAAG,EAAE;KACvD;AACDA,IAAAA,MAAM,GAAG,IAAI,CAACC,eAAe,CAACD,MAAM,CAAC;AACrCA,IAAAA,MAAM,GAAG,IAAI,CAACE,iBAAiB,CAACF,MAAM,CAAC;AACvC,IAAA,IAAI,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;EAEAE,iBAAiBA,CAACF,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAACuW,SAAS,GAAGvW,MAAM,CAACuW,SAAS,KAAK,KAAK,GAAGza,QAAQ,CAACoc,IAAI,GAAGvb,UAAU,CAACqD,MAAM,CAACuW,SAAS,CAAC;AAE5F,IAAA,IAAI,OAAOvW,MAAM,CAAC4/B,KAAK,KAAK,QAAQ,EAAE;MACpC5/B,MAAM,CAAC4/B,KAAK,GAAG;QACb5tB,IAAI,EAAEhS,MAAM,CAAC4/B,KAAK;QAClB7tB,IAAI,EAAE/R,MAAM,CAAC4/B;OACd;AACH,IAAA;AAEA,IAAA,IAAI,OAAO5/B,MAAM,CAAC6/B,KAAK,KAAK,QAAQ,EAAE;MACpC7/B,MAAM,CAAC6/B,KAAK,GAAG7/B,MAAM,CAAC6/B,KAAK,CAACtmC,QAAQ,EAAE;AACxC,IAAA;AAEA,IAAA,IAAI,OAAOyG,MAAM,CAACm9B,OAAO,KAAK,QAAQ,EAAE;MACtCn9B,MAAM,CAACm9B,OAAO,GAAGn9B,MAAM,CAACm9B,OAAO,CAAC5jC,QAAQ,EAAE;AAC5C,IAAA;AAEA,IAAA,OAAOyG,MAAM;AACf,EAAA;AAEA+hC,EAAAA,kBAAkBA,GAAG;IACnB,MAAM/hC,MAAM,GAAG,EAAE;AAEjB,IAAA,KAAK,MAAM,CAAC3M,GAAG,EAAEY,KAAK,CAAC,IAAIsC,MAAM,CAACwB,OAAO,CAAC,IAAI,CAACkJ,OAAO,CAAC,EAAE;MACvD,IAAI,IAAI,CAACZ,WAAW,CAACV,OAAO,CAACtM,GAAG,CAAC,KAAKY,KAAK,EAAE;AAC3C+L,QAAAA,MAAM,CAAC3M,GAAG,CAAC,GAAGY,KAAK;AACrB,MAAA;AACF,IAAA;IAEA+L,MAAM,CAACnK,QAAQ,GAAG,KAAK;IACvBmK,MAAM,CAACtH,OAAO,GAAG,QAAQ;;AAEzB;AACA;AACA;AACA,IAAA,OAAOsH,MAAM;AACf,EAAA;AAEAqY,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAACpB,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,EAAE;MACvB,IAAI,CAACA,gBAAgB,GAAG,IAAI;AAC9B,IAAA;IAEA,IAAI,IAAI,CAACqpB,GAAG,EAAE;AACZ,MAAA,IAAI,CAACA,GAAG,CAACpsC,MAAM,EAAE;MACjB,IAAI,CAACosC,GAAG,GAAG,IAAI;AACjB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA,MAAMsC,WAAW,GAAGxtC,KAAK,IAAI;EAC3B,MAAMY,MAAM,GAAGZ,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC+H,sBAAoB,CAAC;EACzD,IAAI,CAACjP,MAAM,EAAE;AACX,IAAA;AACF,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA8pC,EAAAA,OAAO,CAACl+B,mBAAmB,CAAC5L,MAAM,CAAC;AACrC,CAAC;;AAED;AACAR,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEojC,eAAa,EAAEj6B,sBAAoB,EAAE29B,WAAW,CAAC;AAC3EptC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE+J,kBAAgB,EAAEZ,sBAAoB,EAAE29B,WAAW,CAAC;;ACzxB9E;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAM/iC,MAAI,GAAG,SAAS;AAEtB,MAAMgjC,cAAc,GAAG,iBAAiB;AACxC,MAAMC,gBAAgB,GAAG,eAAe;AACxC,MAAM79B,sBAAoB,GAAG,4BAA4B;AAEzD,MAAMg6B,aAAW,GAAG,OAAO;AAC3B,MAAMC,eAAa,GAAG,SAAS;AAC/B,MAAMr5B,gBAAgB,GAAG,YAAY;AAErC,MAAMlG,SAAO,GAAG;EACd,GAAGmgC,OAAO,CAACngC,OAAO;AAClBw9B,EAAAA,OAAO,EAAE,EAAE;AACXnqB,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACde,EAAAA,SAAS,EAAE,OAAO;EAClBypB,QAAQ,EAAE,sCAAsC,GAC9C,mCAAmC,GACnC,kCAAkC,GAClC,kCAAkC,GAClC,QAAQ;AACV9kC,EAAAA,OAAO,EAAE;AACX,CAAC;AAED,MAAMkH,aAAW,GAAG;EAClB,GAAGkgC,OAAO,CAAClgC,WAAW;AACtBu9B,EAAAA,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;;AAEA,MAAM4F,OAAO,SAASjD,OAAO,CAAC;AAC5B;EACA,WAAWngC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAmhC,EAAAA,cAAcA,GAAG;IACf,OAAO,IAAI,CAACQ,SAAS,EAAE,IAAI,IAAI,CAACwB,WAAW,EAAE;AAC/C,EAAA;;AAEA;AACAtB,EAAAA,sBAAsBA,GAAG;IACvB,OAAO;AACL,MAAA,CAACmB,cAAc,GAAG,IAAI,CAACrB,SAAS,EAAE;AAClC,MAAA,CAACsB,gBAAgB,GAAG,IAAI,CAACE,WAAW;KACrC;AACH,EAAA;AAEAA,EAAAA,WAAWA,GAAG;IACZ,OAAO,IAAI,CAACpF,wBAAwB,CAAC,IAAI,CAAC38B,OAAO,CAACk8B,OAAO,CAAC;AAC5D,EAAA;AACF;;AAEA;AACA;AACA;;AAEA,MAAM8F,WAAW,GAAG7tC,KAAK,IAAI;EAC3B,MAAMY,MAAM,GAAGZ,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC+H,sBAAoB,CAAC;EACzD,IAAI,CAACjP,MAAM,EAAE;AACX,IAAA;AACF,EAAA;;AAEA;AACA,EAAA,IAAIZ,KAAK,CAACM,IAAI,KAAK,OAAO,EAAE;IAC1BN,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;;AAEA;AACA;AACA;AACA;AACAk/B,EAAAA,OAAO,CAACnhC,mBAAmB,CAAC5L,MAAM,CAAC;AACrC,CAAC;;AAED;AACAR,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEmjC,aAAW,EAAEh6B,sBAAoB,EAAEg+B,WAAW,CAAC;AACzEztC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEojC,eAAa,EAAEj6B,sBAAoB,EAAEg+B,WAAW,CAAC;AAC3EztC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE+J,gBAAgB,EAAEZ,sBAAoB,EAAEg+B,WAAW,CAAC;;ACvG9E;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMpjC,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMm+B,aAAa,GAAG,CAAA,OAAA,EAAU5hC,WAAS,CAAA,CAAE;AAC3C,MAAM6hC,wBAAwB,GAAG,CAAA,gBAAA,EAAmB7hC,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;;AAE9E;AACA,MAAMgtB,WAAW,GAAG,OAAO;AAC3B,MAAM/S,YAAY,GAAG,QAAQ;AAE7B,MAAMokB,cAAc,GAAG,aAAa;AACpC,MAAMlR,cAAc,GAAG,mBAAmB;AAE1C,MAAMmR,iBAAiB,GAAG,mBAAmB;AAC7C,MAAMC,gBAAgB,GAAG,kBAAkB;AAC3C,MAAMC,eAAe,GAAG,iBAAiB;AACzC,MAAMC,qBAAqB,GAAG,uBAAuB;;AAErD;AACA;AACA,MAAMC,aAAa,GAAG,iBAAiB;AAEvC,MAAM9jC,SAAO,GAAG;AACd+jC,EAAAA,MAAM,EAAE,KAAK;AAAE;EACfC,SAAS,EAAE,IAAI;AACjB,CAAC;AAED,MAAM/jC,aAAW,GAAG;AAClB8jC,EAAAA,MAAM,EAAE,gBAAgB;AACxBC,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,KAAK,SAAS7iC,aAAa,CAAC;AAChCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;AACA,IAAA,IAAI,CAAC,IAAI,CAACgB,QAAQ,EAAE;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC4vB,MAAM,GAAGvuB,cAAc,CAACE,OAAO,CAAC2vB,cAAc,EAAE,IAAI,CAAClxB,QAAQ,CAAC;AAEnE,IAAA,IAAI,CAAC,IAAI,CAAC4vB,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;IAEA,IAAI,CAACiT,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,cAAc,GAAG,MAAM,IAAI,CAACC,OAAO,EAAE;AAE1C,IAAA,IAAI,IAAI,CAAChjC,OAAO,CAACyiC,MAAM,EAAE;MACvB,IAAI,CAACQ,aAAa,EAAE;AACtB,IAAA;IAEA,IAAI,CAACC,YAAY,EAAE;IACnB,IAAI,CAACt7B,kBAAkB,EAAE;IACzB,IAAI,CAACo7B,OAAO,EAAE;AAChB,EAAA;;AAEA;EACA,WAAWtkC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA6Y,EAAAA,MAAMA,GAAG;IACP,IAAI,CAACurB,OAAO,EAAE;AAChB,EAAA;AAEA5iC,EAAAA,OAAOA,GAAG;AACR7L,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACm7B,MAAM,EAAEmB,WAAW,EAAE,IAAI,CAACiS,cAAc,CAAC;AAC/DxuC,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACm7B,MAAM,EAAE5R,YAAY,EAAE,IAAI,CAACglB,cAAc,CAAC;AAEhE,IAAA,IAAI,CAACH,OAAO,EAAE3vC,MAAM,EAAE;AACtB,IAAA,IAAI,CAAC6vC,MAAM,EAAE7vC,MAAM,EAAE;IAErB,KAAK,CAACmN,OAAO,EAAE;AACjB,EAAA;;AAEA;EACAnB,iBAAiBA,CAACF,MAAM,EAAE;AACxB;AACA,IAAA,IAAIA,MAAM,CAAC0jC,MAAM,KAAK,IAAI,EAAE;MAC1B1jC,MAAM,CAAC0jC,MAAM,GAAG,IAAI;AACtB,IAAA;AAEA,IAAA,OAAO1jC,MAAM;AACf,EAAA;AAEA6I,EAAAA,kBAAkBA,GAAG;AACnBrT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAEmB,WAAW,EAAE,IAAI,CAACiS,cAAc,CAAC;AAC9DxuC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC24B,MAAM,EAAE5R,YAAY,EAAE,IAAI,CAACglB,cAAc,CAAC;AACjE,EAAA;AAEAI,EAAAA,IAAIA,GAAG;AACL,IAAA,OAAO,IAAI,CAACxT,MAAM,CAACnxB,GAAG,KAAK,EAAE,GAAG,CAAC,GAAGnG,MAAM,CAAC+C,UAAU,CAAC,IAAI,CAACu0B,MAAM,CAACnxB,GAAG,CAAC;AACxE,EAAA;AAEA4kC,EAAAA,IAAIA,GAAG;AACL,IAAA,OAAO,IAAI,CAACzT,MAAM,CAACpxB,GAAG,KAAK,EAAE,GAAG,GAAG,GAAGlG,MAAM,CAAC+C,UAAU,CAAC,IAAI,CAACu0B,MAAM,CAACpxB,GAAG,CAAC;AAC1E,EAAA;AAEA8kC,EAAAA,MAAMA,GAAG;IACP,OAAOhrC,MAAM,CAAC+C,UAAU,CAAC,IAAI,CAACu0B,MAAM,CAAC38B,KAAK,CAAC;AAC7C,EAAA;AAEAswC,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAMhJ,IAAI,GAAG,IAAI,CAAC8I,IAAI,EAAE,GAAG,IAAI,CAACD,IAAI,EAAE;AACtC,IAAA,OAAO7I,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC+I,MAAM,EAAE,GAAG,IAAI,CAACF,IAAI,EAAE,IAAI7I,IAAI,GAAG,CAAC;AAC5D,EAAA;AAEA0I,EAAAA,OAAOA,GAAG;AACR;AACA,IAAA,IAAI,CAACjjC,QAAQ,CAAC6J,KAAK,CAACgF,WAAW,CAAC4zB,aAAa,EAAE,CAAA,EAAG,IAAI,CAACc,MAAM,EAAE,EAAE,CAAC;IAElE,IAAI,IAAI,CAACT,WAAW,EAAE;AACpB,MAAA,IAAI,CAACA,WAAW,CAAC3iB,WAAW,GAAG,IAAI,CAACqjB,OAAO,CAAC,IAAI,CAACF,MAAM,EAAE,CAAC;AAC5D,IAAA;IAEA9uC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACk4B,MAAM,EAAEsS,aAAa,EAAE;AAAEjvC,MAAAA,KAAK,EAAE,IAAI,CAACqwC,MAAM;AAAG,KAAC,CAAC;AAC5E,EAAA;EAEAE,OAAOA,CAACvwC,KAAK,EAAE;IACb,OAAO,OAAO,IAAI,CAACgN,OAAO,CAAC0iC,SAAS,KAAK,UAAU,GAAG,IAAI,CAAC1iC,OAAO,CAAC0iC,SAAS,CAAC1vC,KAAK,CAAC,GAAG4yB,MAAM,CAAC5yB,KAAK,CAAC;AACrG,EAAA;AAEAiwC,EAAAA,aAAaA,GAAG;AACd;IACA,IAAI,CAACL,OAAO,GAAG/nC,QAAQ,CAACwkB,aAAa,CAAC,QAAQ,CAAC;AAC/C,IAAA,IAAI,CAACujB,OAAO,CAACnY,SAAS,GAAG,CAAA,EAAG2X,iBAAiB,CAAA,4BAAA,CAA8B;IAC3E,IAAI,CAACQ,OAAO,CAAC7pC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;;AAEhD;AACA;AACA,IAAA,MAAM8Y,KAAK,GAAGhX,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;IAC3CxN,KAAK,CAAC4Y,SAAS,GAAG,eAAe;IACjC,IAAI,CAACoY,WAAW,GAAGhoC,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;AAChD,IAAA,IAAI,CAACwjB,WAAW,CAACpY,SAAS,GAAG,eAAe;IAC5C,IAAI,CAACmY,OAAO,CAACv1B,MAAM,CAACwE,KAAK,EAAE,IAAI,CAACgxB,WAAW,CAAC;IAE5C,IAAI,CAAClT,MAAM,CAAC6T,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAACZ,OAAO,CAAC;AAC7D,EAAA;AAEAM,EAAAA,YAAYA,GAAG;IACb,MAAMO,MAAM,GAAG,IAAI,CAAC9T,MAAM,CAACj2B,YAAY,CAAC,MAAM,CAAC;IAC/C,MAAMgqC,QAAQ,GAAGD,MAAM,GAAG5oC,QAAQ,CAACC,cAAc,CAAC2oC,MAAM,CAAC,GAAG,IAAI;IAEhE,IAAI,CAACC,QAAQ,EAAE;AACb,MAAA;AACF,IAAA;AAEA,IAAA,MAAMllC,GAAG,GAAG,IAAI,CAAC2kC,IAAI,EAAE;IACvB,MAAM7I,IAAI,GAAG,IAAI,CAAC8I,IAAI,EAAE,GAAG5kC,GAAG,IAAI,CAAC;IAEnC,MAAMmlC,MAAM,GAAG,EAAE;IACjB,KAAK,MAAMC,MAAM,IAAIxiC,cAAc,CAAC7L,IAAI,CAAC,QAAQ,EAAEmuC,QAAQ,CAAC,EAAE;MAC5D,MAAM1wC,KAAK,GAAGqF,MAAM,CAAC+C,UAAU,CAACwoC,MAAM,CAAC5wC,KAAK,CAAC;AAE7C,MAAA,IAAI,CAACqF,MAAM,CAACkW,KAAK,CAACvb,KAAK,CAAC,EAAE;AACxB;QACA,MAAM8X,KAAK,GAAGpQ,IAAI,CAAC8D,GAAG,CAAC9D,IAAI,CAAC6D,GAAG,CAAC,CAACvL,KAAK,GAAGwL,GAAG,IAAI87B,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5DqJ,MAAM,CAAC/hC,IAAI,CAAC;UAAEkJ,KAAK;UAAEmE,KAAK,EAAE20B,MAAM,CAAC30B;AAAM,SAAC,CAAC;AAC7C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI00B,MAAM,CAACtsC,MAAM,KAAK,CAAC,EAAE;AACvB,MAAA;AACF,IAAA;AAEAssC,IAAAA,MAAM,CAACE,IAAI,CAAC,CAAChL,CAAC,EAAEE,CAAC,KAAKF,CAAC,CAAC/tB,KAAK,GAAGiuB,CAAC,CAACjuB,KAAK,CAAC;IAExC,IAAI,CAACg4B,MAAM,GAAGjoC,QAAQ,CAACwkB,aAAa,CAAC,KAAK,CAAC;AAC3C,IAAA,IAAI,CAACyjB,MAAM,CAACrY,SAAS,GAAG4X,gBAAgB;IACxC,IAAI,CAACS,MAAM,CAAC/pC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;;AAE/C;AACA,IAAA,MAAM+qC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAGH,MAAM,CAAC1iC,GAAG,CAAC+a,KAAK,IAAIA,KAAK,CAAClR,KAAK,CAAC,EAAE,CAAC,CAAC;AACzD,IAAA,IAAI,CAACg4B,MAAM,CAACl5B,KAAK,CAACm6B,mBAAmB,GAAGD,KAAK,CAACvsC,KAAK,CAAC,CAAC,CAAC,CAAC0J,GAAG,CAAC,CAAC+iC,IAAI,EAAE3lC,KAAK,KAAK,CAAA,EAAG2lC,IAAI,GAAGF,KAAK,CAACzlC,KAAK,CAAC,IAAI,CAAC,CAAC8C,IAAI,CAAC,GAAG,CAAC;AAEjH,IAAA,KAAK,MAAM,CAAC9C,KAAK,EAAE2d,KAAK,CAAC,IAAI2nB,MAAM,CAAC7sC,OAAO,EAAE,EAAE;AAC7C,MAAA,MAAMmtC,IAAI,GAAGppC,QAAQ,CAACwkB,aAAa,CAAC,MAAM,CAAC;MAC3C4kB,IAAI,CAACxZ,SAAS,GAAG6X,eAAe;MAChC2B,IAAI,CAACr6B,KAAK,CAACs6B,eAAe,GAAG,CAAA,EAAG7lC,KAAK,GAAG,CAAC,CAAA,CAAE;MAE3C,IAAI2d,KAAK,CAAC/M,KAAK,EAAE;AACf,QAAA,MAAMA,KAAK,GAAGpU,QAAQ,CAACwkB,aAAa,CAAC,MAAM,CAAC;QAC5CpQ,KAAK,CAACwb,SAAS,GAAG8X,qBAAqB;AACvCtzB,QAAAA,KAAK,CAACiR,WAAW,GAAGlE,KAAK,CAAC/M,KAAK;AAC/Bg1B,QAAAA,IAAI,CAAC52B,MAAM,CAAC4B,KAAK,CAAC;AACpB,MAAA;AAEA,MAAA,IAAI,CAAC6zB,MAAM,CAACz1B,MAAM,CAAC42B,IAAI,CAAC;AAC1B,IAAA;IAEA,IAAI,CAAClkC,QAAQ,CAACsN,MAAM,CAAC,IAAI,CAACy1B,MAAM,CAAC;AACnC,EAAA;AACF;;AAEA;AACA;AACA;;AAEAvuC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEqnC,wBAAwB,EAAE,MAAM;EACxD,KAAK,MAAM/vC,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC4sC,cAAc,CAAC,EAAE;AACzDQ,IAAAA,KAAK,CAAChiC,mBAAmB,CAACxO,OAAO,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;AC7OF;AACA;AACA;AACA;AACA;AACA;;;AASA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,WAAW;AACxB,MAAMuB,UAAQ,GAAG,cAAc;AAC/B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,YAAY,GAAG,WAAW;AAEhC,MAAMqgC,cAAc,GAAG,CAAA,QAAA,EAAW9jC,WAAS,CAAA,CAAE;AAC7C,MAAM29B,aAAW,GAAG,CAAA,KAAA,EAAQ39B,WAAS,CAAA,CAAE;AACvC,MAAM0E,qBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,EAAGyD,YAAY,CAAA,CAAE;AAE7D,MAAMsgC,oBAAoB,GAAG,WAAW;AACxC,MAAMrgC,mBAAiB,GAAG,QAAQ;AAElC,MAAMsgC,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,sBAAoB,GAAG,yBAAyB;AAEtD,MAAMlmC,SAAO,GAAG;AACdmmC,EAAAA,UAAU,EAAE,cAAc;AAC1BC,EAAAA,YAAY,EAAE,KAAK;AACnB/vC,EAAAA,MAAM,EAAE,IAAI;AACZqV,EAAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,MAAMzL,aAAW,GAAG;AAClBkmC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,YAAY,EAAE,SAAS;AACvB/vC,EAAAA,MAAM,EAAE,SAAS;AACjBqV,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAM26B,SAAS,SAASjlC,aAAa,CAAC;AACpCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;AACA,IAAA,IAAI,CAACimC,YAAY,GAAG,IAAI/yC,GAAG,EAAE;AAC7B,IAAA,IAAI,CAACgzC,mBAAmB,GAAG,IAAIhzC,GAAG,EAAE;AACpC,IAAA,IAAI,CAACizC,YAAY,GAAGhqC,gBAAgB,CAAC,IAAI,CAAC6E,QAAQ,CAAC,CAAColC,SAAS,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAACplC,QAAQ;IAClG,IAAI,CAACqlC,aAAa,GAAG,IAAI;IACzB,IAAI,CAAC/9B,SAAS,GAAG,IAAI;IACrB,IAAI,CAACg+B,mBAAmB,GAAG;AACzBC,MAAAA,eAAe,EAAE,CAAC;AAClBC,MAAAA,eAAe,EAAE;KAClB;AACD,IAAA,IAAI,CAACC,OAAO,EAAE,CAAA;AAChB,EAAA;;AAEA;EACA,WAAW9mC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA4mC,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACC,gCAAgC,EAAE;IACvC,IAAI,CAACC,wBAAwB,EAAE;IAE/B,IAAI,IAAI,CAACr+B,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACoC,UAAU,EAAE;AAC7B,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACpC,SAAS,GAAG,IAAI,CAACs+B,eAAe,EAAE;AACzC,IAAA;IAEA,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACX,mBAAmB,CAACnyC,MAAM,EAAE,EAAE;AACvD,MAAA,IAAI,CAACuU,SAAS,CAACiD,OAAO,CAACs7B,OAAO,CAAC;AACjC,IAAA;AACF,EAAA;AAEAxlC,EAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,CAACiH,SAAS,CAACoC,UAAU,EAAE;IAC3B,KAAK,CAACrJ,OAAO,EAAE;AACjB,EAAA;;AAEA;EACAnB,iBAAiBA,CAACF,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAAChK,MAAM,GAAG2G,UAAU,CAACqD,MAAM,CAAChK,MAAM,CAAC,IAAI8F,QAAQ,CAACoc,IAAI;AAE1D,IAAA,IAAI,OAAOlY,MAAM,CAACqL,SAAS,KAAK,QAAQ,EAAE;MACxCrL,MAAM,CAACqL,SAAS,GAAGrL,MAAM,CAACqL,SAAS,CAAC9O,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACjO,KAAK,IAAIqF,MAAM,CAAC+C,UAAU,CAACpI,KAAK,CAAC,CAAC;AACvF,IAAA;AAEA,IAAA,OAAO+L,MAAM;AACf,EAAA;AAEA2mC,EAAAA,wBAAwBA,GAAG;AACzB,IAAA,IAAI,CAAC,IAAI,CAAC1lC,OAAO,CAAC8kC,YAAY,EAAE;AAC9B,MAAA;AACF,IAAA;;AAEA;IACAvwC,YAAY,CAACC,GAAG,CAAC,IAAI,CAACwL,OAAO,CAACjL,MAAM,EAAEipC,aAAW,CAAC;AAElDzpC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACgJ,OAAO,CAACjL,MAAM,EAAEipC,aAAW,EAAEsG,qBAAqB,EAAEnwC,KAAK,IAAI;AAChF,MAAA,MAAM0xC,iBAAiB,GAAG,IAAI,CAACZ,mBAAmB,CAACzyC,GAAG,CAAC2B,KAAK,CAACY,MAAM,CAAC+wC,IAAI,CAAC;AACzE,MAAA,IAAID,iBAAiB,EAAE;QACrB1xC,KAAK,CAACyO,cAAc,EAAE;AACtB,QAAA,MAAM/F,IAAI,GAAG,IAAI,CAACqoC,YAAY,IAAInrC,MAAM;QACxC,MAAMgsC,MAAM,GAAGF,iBAAiB,CAACG,SAAS,GAAG,IAAI,CAACjmC,QAAQ,CAACimC,SAAS;QACpE,IAAInpC,IAAI,CAACoP,QAAQ,EAAE;UACjBpP,IAAI,CAACoP,QAAQ,CAAC;AAAEwB,YAAAA,GAAG,EAAEs4B,MAAM;AAAE75B,YAAAA,QAAQ,EAAE;AAAS,WAAC,CAAC;AAClD,UAAA;AACF,QAAA;;AAEA;QACArP,IAAI,CAACopC,SAAS,GAAGF,MAAM;AACzB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAJ,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAMpP,OAAO,GAAG;MACd15B,IAAI,EAAE,IAAI,CAACqoC,YAAY;AACvB96B,MAAAA,SAAS,EAAE,IAAI,CAACpK,OAAO,CAACoK,SAAS;AACjCy6B,MAAAA,UAAU,EAAE,IAAI,CAAC7kC,OAAO,CAAC6kC;KAC1B;AAED,IAAA,OAAO,IAAI36B,oBAAoB,CAACpT,OAAO,IAAI,IAAI,CAACovC,iBAAiB,CAACpvC,OAAO,CAAC,EAAEy/B,OAAO,CAAC;AACtF,EAAA;;AAEA;EACA2P,iBAAiBA,CAACpvC,OAAO,EAAE;AACzB,IAAA,MAAMqvC,aAAa,GAAG57B,KAAK,IAAI,IAAI,CAACy6B,YAAY,CAACxyC,GAAG,CAAC,IAAI+X,KAAK,CAACxV,MAAM,CAACoF,EAAE,EAAE,CAAC;IAC3E,MAAMisC,QAAQ,GAAG77B,KAAK,IAAI;MACxB,IAAI,CAAC86B,mBAAmB,CAACC,eAAe,GAAG/6B,KAAK,CAACxV,MAAM,CAACixC,SAAS;AACjE,MAAA,IAAI,CAACK,QAAQ,CAACF,aAAa,CAAC57B,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAMg7B,eAAe,GAAG,CAAC,IAAI,CAACL,YAAY,IAAIrqC,QAAQ,CAAC6B,eAAe,EAAEupC,SAAS;IACjF,MAAMK,eAAe,GAAGf,eAAe,IAAI,IAAI,CAACF,mBAAmB,CAACE,eAAe;AACnF,IAAA,IAAI,CAACF,mBAAmB,CAACE,eAAe,GAAGA,eAAe;AAE1D,IAAA,KAAK,MAAMh7B,KAAK,IAAIzT,OAAO,EAAE;AAC3B,MAAA,IAAI,CAACyT,KAAK,CAACC,cAAc,EAAE;QACzB,IAAI,CAAC46B,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAACmB,iBAAiB,CAACJ,aAAa,CAAC57B,KAAK,CAAC,CAAC;AAE5C,QAAA;AACF,MAAA;AAEA,MAAA,MAAMi8B,wBAAwB,GAAGj8B,KAAK,CAACxV,MAAM,CAACixC,SAAS,IAAI,IAAI,CAACX,mBAAmB,CAACC,eAAe;AACnG;MACA,IAAIgB,eAAe,IAAIE,wBAAwB,EAAE;QAC/CJ,QAAQ,CAAC77B,KAAK,CAAC;AACf;QACA,IAAI,CAACg7B,eAAe,EAAE;AACpB,UAAA;AACF,QAAA;AAEA,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAI,CAACe,eAAe,IAAI,CAACE,wBAAwB,EAAE;QACjDJ,QAAQ,CAAC77B,KAAK,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;AAEAk7B,EAAAA,gCAAgCA,GAAG;AACjC,IAAA,IAAI,CAACT,YAAY,GAAG,IAAI/yC,GAAG,EAAE;AAC7B,IAAA,IAAI,CAACgzC,mBAAmB,GAAG,IAAIhzC,GAAG,EAAE;AAEpC,IAAA,MAAMw0C,WAAW,GAAGrlC,cAAc,CAAC7L,IAAI,CAAC+uC,qBAAqB,EAAE,IAAI,CAACtkC,OAAO,CAACjL,MAAM,CAAC;AAEnF,IAAA,KAAK,MAAM2xC,MAAM,IAAID,WAAW,EAAE;AAChC;MACA,IAAI,CAACC,MAAM,CAACZ,IAAI,IAAI3pC,UAAU,CAACuqC,MAAM,CAAC,EAAE;AACtC,QAAA;AACF,MAAA;AAEA,MAAA,MAAMb,iBAAiB,GAAGzkC,cAAc,CAACE,OAAO,CAACqlC,SAAS,CAACD,MAAM,CAACZ,IAAI,CAAC,EAAE,IAAI,CAAC/lC,QAAQ,CAAC;;AAEvF;AACA,MAAA,IAAInE,SAAS,CAACiqC,iBAAiB,CAAC,EAAE;AAChC,QAAA,IAAI,CAACb,YAAY,CAAC9yC,GAAG,CAACy0C,SAAS,CAACD,MAAM,CAACZ,IAAI,CAAC,EAAEY,MAAM,CAAC;QACrD,IAAI,CAACzB,mBAAmB,CAAC/yC,GAAG,CAACw0C,MAAM,CAACZ,IAAI,EAAED,iBAAiB,CAAC;AAC9D,MAAA;AACF,IAAA;AACF,EAAA;EAEAQ,QAAQA,CAACtxC,MAAM,EAAE;AACf,IAAA,IAAI,IAAI,CAACqwC,aAAa,KAAKrwC,MAAM,EAAE;AACjC,MAAA;AACF,IAAA;IAEA,IAAI,CAACwxC,iBAAiB,CAAC,IAAI,CAACvmC,OAAO,CAACjL,MAAM,CAAC;IAC3C,IAAI,CAACqwC,aAAa,GAAGrwC,MAAM;AAC3BA,IAAAA,MAAM,CAACuH,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AACvC,IAAA,IAAI,CAAC6iC,gBAAgB,CAAC7xC,MAAM,CAAC;IAE7BR,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEokC,cAAc,EAAE;AAAEnuC,MAAAA,aAAa,EAAEjB;AAAO,KAAC,CAAC;AAChF,EAAA;EAEA6xC,gBAAgBA,CAAC7xC,MAAM,EAAE;AACvB;IACA,IAAIA,MAAM,CAACuH,SAAS,CAACrG,QAAQ,CAACmuC,oBAAoB,CAAC,EAAE;MACnD,MAAMyC,UAAU,GAAG9xC,MAAM,CAACkH,OAAO,CAAC,OAAO,CAAC,EAAE8F,sBAAsB;AAClE,MAAA,IAAI8kC,UAAU,EAAEplC,OAAO,CAACmjC,sBAAoB,CAAC,EAAE;AAC7CiC,QAAAA,UAAU,CAACvqC,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AAC7C,MAAA;AAEA,MAAA;AACF,IAAA;IAEA,KAAK,MAAM+iC,SAAS,IAAI1lC,cAAc,CAACM,OAAO,CAAC3M,MAAM,EAAEwvC,uBAAuB,CAAC,EAAE;AAC/E;AACA;MACA,KAAK,MAAMl6B,IAAI,IAAIjJ,cAAc,CAACS,IAAI,CAACilC,SAAS,EAAEnC,mBAAmB,CAAC,EAAE;AACtEt6B,QAAAA,IAAI,CAAC/N,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AACvC,MAAA;AACF,IAAA;AACF,EAAA;EAEAwiC,iBAAiBA,CAACp2B,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAAC7T,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAE1C,IAAA,MAAMgjC,WAAW,GAAG3lC,cAAc,CAAC7L,IAAI,CAAC,CAAA,EAAG+uC,qBAAqB,CAAA,CAAA,EAAIvgC,mBAAiB,CAAA,CAAE,EAAEoM,MAAM,CAAC;AAChG,IAAA,KAAK,MAAMhD,IAAI,IAAI45B,WAAW,EAAE;AAC9B55B,MAAAA,IAAI,CAAC7Q,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAxP,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,qBAAmB,EAAE,MAAM;EACjD,KAAK,MAAMiiC,GAAG,IAAI5lC,cAAc,CAAC7L,IAAI,CAAC8uC,iBAAiB,CAAC,EAAE;AACxDU,IAAAA,SAAS,CAACpkC,mBAAmB,CAACqmC,GAAG,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;AC1QF;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMpoC,MAAI,GAAG,KAAK;AAClB,MAAMuB,UAAQ,GAAG,QAAQ;AACzB,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMsP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAM4D,oBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,CAAE;AAChD,MAAMsE,aAAa,GAAG,CAAA,OAAA,EAAUtE,WAAS,CAAA,CAAE;AAC3C,MAAM0E,mBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,CAAE;AAE9C,MAAMgE,cAAc,GAAG,WAAW;AAClC,MAAMC,eAAe,GAAG,YAAY;AACpC,MAAMsP,YAAY,GAAG,SAAS;AAC9B,MAAMC,cAAc,GAAG,WAAW;AAClC,MAAMC,QAAQ,GAAG,MAAM;AACvB,MAAMC,OAAO,GAAG,KAAK;AAErB,MAAMhQ,iBAAiB,GAAG,QAAQ;AAClC,MAAMR,iBAAe,GAAG,MAAM;AAC9B,MAAMC,iBAAe,GAAG,MAAM;AAC9B,MAAMohC,oBAAoB,GAAG,yBAAyB;AACtD,MAAMtwB,aAAa,GAAG,OAAO;AAC7B,MAAM2yB,wBAAwB,GAAG,CAAA,KAAA,EAAQrC,oBAAoB,CAAA,CAAA,CAAG;AAEhE,MAAMsC,kBAAkB,GAAG,qCAAqC;AAChE,MAAMC,cAAc,GAAG,6BAA6B;AACpD,MAAMvhC,cAAc,GAAG,CAAA,SAAA,EAAYqhC,wBAAwB,qBAAqBA,wBAAwB,CAAA,cAAA,EAAiBA,wBAAwB,CAAA,CAAE;AACnJ,MAAMjjC,sBAAoB,GAAG,wBAAwB;AACrD,MAAMojC,mBAAmB,GAAG,CAAA,EAAGxhC,cAAc,CAAA,EAAA,EAAK5B,sBAAoB,CAAA,CAAE;AAExE,MAAMqjC,2BAA2B,GAAG,CAAA,CAAA,EAAItjC,iBAAiB,CAAA,sBAAA,CAAwB;;AAEjF;AACA;AACA;;AAEA,MAAMujC,GAAG,SAASxnC,aAAa,CAAC;EAC9BV,WAAWA,CAACjN,OAAO,EAAE;IACnB,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACgkB,OAAO,GAAG,IAAI,CAACpW,QAAQ,CAAC9D,OAAO,CAACirC,kBAAkB,CAAC;AAExD,IAAA,IAAI,CAAC,IAAI,CAAC/wB,OAAO,EAAE;AACjB,MAAA;AACA;AACA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACoxB,qBAAqB,CAAC,IAAI,CAACpxB,OAAO,EAAE,IAAI,CAACqxB,YAAY,EAAE,CAAC;AAE7DjzC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE4E,aAAa,EAAExQ,KAAK,IAAI,IAAI,CAAC4V,QAAQ,CAAC5V,KAAK,CAAC,CAAC;AAC9E,EAAA;;AAEA;EACA,WAAWyK,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAmS,EAAAA,IAAIA,GAAG;AAAE;AACP,IAAA,MAAM02B,SAAS,GAAG,IAAI,CAAC1nC,QAAQ;AAC/B,IAAA,IAAI,IAAI,CAAC2nC,aAAa,CAACD,SAAS,CAAC,EAAE;AACjC,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,MAAM39B,MAAM,GAAG,IAAI,CAAC69B,cAAc,EAAE;IAEpC,MAAM/vB,SAAS,GAAG9N,MAAM,GACtBvV,YAAY,CAACkD,OAAO,CAACqS,MAAM,EAAE2F,YAAU,EAAE;AAAEzZ,MAAAA,aAAa,EAAEyxC;KAAW,CAAC,GACtE,IAAI;IAEN,MAAM3wB,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAACgwC,SAAS,EAAEl4B,YAAU,EAAE;AAAEvZ,MAAAA,aAAa,EAAE8T;AAAO,KAAC,CAAC;IAExF,IAAIgN,SAAS,CAAClT,gBAAgB,IAAKgU,SAAS,IAAIA,SAAS,CAAChU,gBAAiB,EAAE;AAC3E,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACgkC,WAAW,CAAC99B,MAAM,EAAE29B,SAAS,CAAC;AACnC,IAAA,IAAI,CAACI,SAAS,CAACJ,SAAS,EAAE39B,MAAM,CAAC;AACnC,EAAA;;AAEA;AACA+9B,EAAAA,SAASA,CAAC11C,OAAO,EAAE21C,WAAW,EAAE;IAC9B,IAAI,CAAC31C,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEAA,IAAAA,OAAO,CAACmK,SAAS,CAACiM,GAAG,CAACxE,iBAAiB,CAAC;IAExC,IAAI,CAAC8jC,SAAS,CAACzmC,cAAc,CAACiB,sBAAsB,CAAClQ,OAAO,CAAC,CAAC,CAAA;;IAE9D,MAAMmf,QAAQ,GAAGA,MAAM;MACrB,IAAInf,OAAO,CAACuH,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC1CvH,QAAAA,OAAO,CAACmK,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;AACtC,QAAA;AACF,MAAA;AAEArR,MAAAA,OAAO,CAAC8G,eAAe,CAAC,UAAU,CAAC;AACnC9G,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;AAC3C,MAAA,IAAI,CAACgvC,WAAW,CAAC51C,OAAO,EAAE,IAAI,CAAC;AAC/BoC,MAAAA,YAAY,CAACkD,OAAO,CAACtF,OAAO,EAAEqd,aAAW,EAAE;AACzCxZ,QAAAA,aAAa,EAAE8xC;AACjB,OAAC,CAAC;IACJ,CAAC;AAED,IAAA,IAAI,CAACtnC,cAAc,CAAC8Q,QAAQ,EAAEnf,OAAO,EAAEA,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC,CAAC;AACrF,EAAA;AAEAqkC,EAAAA,WAAWA,CAACz1C,OAAO,EAAE21C,WAAW,EAAE;IAChC,IAAI,CAAC31C,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEAA,IAAAA,OAAO,CAACmK,SAAS,CAACrJ,MAAM,CAAC8Q,iBAAiB,CAAC;IAC3C5R,OAAO,CAAC2lC,IAAI,EAAE;IAEd,IAAI,CAAC8P,WAAW,CAACxmC,cAAc,CAACiB,sBAAsB,CAAClQ,OAAO,CAAC,CAAC,CAAA;;IAEhE,MAAMmf,QAAQ,GAAGA,MAAM;MACrB,IAAInf,OAAO,CAACuH,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC1CvH,QAAAA,OAAO,CAACmK,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;AACzC,QAAA;AACF,MAAA;AAEArR,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC;AAC5C5G,MAAAA,OAAO,CAAC4G,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;AACtC,MAAA,IAAI,CAACgvC,WAAW,CAAC51C,OAAO,EAAE,KAAK,CAAC;AAChCoC,MAAAA,YAAY,CAACkD,OAAO,CAACtF,OAAO,EAAEud,cAAY,EAAE;AAAE1Z,QAAAA,aAAa,EAAE8xC;AAAY,OAAC,CAAC;IAC7E,CAAC;AAED,IAAA,IAAI,CAACtnC,cAAc,CAAC8Q,QAAQ,EAAEnf,OAAO,EAAEA,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC,CAAC;AACrF,EAAA;EAEAwG,QAAQA,CAAC5V,KAAK,EAAE;IACd,IAAI,CAAE,CAACkQ,cAAc,EAAEC,eAAe,EAAEsP,YAAY,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,OAAO,CAAC,CAAChd,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAE,EAAE;AAC7G,MAAA;AACF,IAAA;IAEA+B,KAAK,CAACgmB,eAAe,EAAE,CAAA;IACvBhmB,KAAK,CAACyO,cAAc,EAAE;AAEtB,IAAA,MAAMrB,QAAQ,GAAG,IAAI,CAACimC,YAAY,EAAE,CAACluC,MAAM,CAACnH,OAAO,IAAI,CAACgK,UAAU,CAAChK,OAAO,CAAC,CAAC;AAC5E,IAAA,IAAI61C,iBAAiB;AAErB,IAAA,IAAI,CAACl0B,QAAQ,EAAEC,OAAO,CAAC,CAAChd,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC,EAAE;AAC3C41C,MAAAA,iBAAiB,GAAG7zC,KAAK,CAAC/B,GAAG,KAAK0hB,QAAQ,GAAGvS,QAAQ,CAAC,CAAC,CAAC,GAAGA,QAAQ,CAAC4b,EAAE,CAAC,EAAE,CAAC;AAC5E,IAAA,CAAC,MAAM;AACL,MAAA,MAAMtQ,MAAM,GAAG,CAACvI,eAAe,EAAEuP,cAAc,CAAC,CAAC9c,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AACpE41C,MAAAA,iBAAiB,GAAGjqC,oBAAoB,CAACwD,QAAQ,EAAEpN,KAAK,CAACY,MAAM,EAAE8X,MAAM,EAAE,IAAI,CAAC;AAChF,IAAA;AAEA,IAAA,IAAIm7B,iBAAiB,EAAE;MACrBA,iBAAiB,CAAC55B,KAAK,CAAC;AAAEC,QAAAA,aAAa,EAAE;AAAK,OAAC,CAAC;MAChDi5B,GAAG,CAAC3mC,mBAAmB,CAACqnC,iBAAiB,CAAC,CAACj3B,IAAI,EAAE;AACnD,IAAA;AACF,EAAA;AAEAy2B,EAAAA,YAAYA,GAAG;AAAE;IACf,OAAOpmC,cAAc,CAAC7L,IAAI,CAAC6xC,mBAAmB,EAAE,IAAI,CAACjxB,OAAO,CAAC;AAC/D,EAAA;AAEAwxB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACH,YAAY,EAAE,CAACjyC,IAAI,CAACiM,KAAK,IAAI,IAAI,CAACkmC,aAAa,CAAClmC,KAAK,CAAC,CAAC,IAAI,IAAI;AAC7E,EAAA;AAEA+lC,EAAAA,qBAAqBA,CAACp3B,MAAM,EAAE5O,QAAQ,EAAE;IACtC,IAAI,CAAC0mC,wBAAwB,CAAC93B,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;AAExD,IAAA,KAAK,MAAM3O,KAAK,IAAID,QAAQ,EAAE;AAC5B,MAAA,IAAI,CAAC2mC,4BAA4B,CAAC1mC,KAAK,CAAC;AAC1C,IAAA;AACF,EAAA;EAEA0mC,4BAA4BA,CAAC1mC,KAAK,EAAE;AAClCA,IAAAA,KAAK,GAAG,IAAI,CAAC2mC,gBAAgB,CAAC3mC,KAAK,CAAC;AACpC,IAAA,MAAM4mC,QAAQ,GAAG,IAAI,CAACV,aAAa,CAAClmC,KAAK,CAAC;AAC1C,IAAA,MAAM6mC,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAAC9mC,KAAK,CAAC;AAC9CA,IAAAA,KAAK,CAACzI,YAAY,CAAC,eAAe,EAAEqvC,QAAQ,CAAC;IAE7C,IAAIC,SAAS,KAAK7mC,KAAK,EAAE;MACvB,IAAI,CAACymC,wBAAwB,CAACI,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC;AAClE,IAAA;IAEA,IAAI,CAACD,QAAQ,EAAE;AACb5mC,MAAAA,KAAK,CAACzI,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;AACtC,IAAA;IAEA,IAAI,CAACkvC,wBAAwB,CAACzmC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;;AAEnD;AACA,IAAA,IAAI,CAAC+mC,kCAAkC,CAAC/mC,KAAK,CAAC;AAChD,EAAA;EAEA+mC,kCAAkCA,CAAC/mC,KAAK,EAAE;AACxC,IAAA,MAAMzM,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAACb,KAAK,CAAC;IAE3D,IAAI,CAACzM,MAAM,EAAE;AACX,MAAA;AACF,IAAA;IAEA,IAAI,CAACkzC,wBAAwB,CAAClzC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;IAEzD,IAAIyM,KAAK,CAACrH,EAAE,EAAE;AACZ,MAAA,IAAI,CAAC8tC,wBAAwB,CAAClzC,MAAM,EAAE,iBAAiB,EAAE,CAAA,EAAGyM,KAAK,CAACrH,EAAE,CAAA,CAAE,CAAC;AACzE,IAAA;AACF,EAAA;AAEA4tC,EAAAA,WAAWA,CAAC51C,OAAO,EAAEi0B,IAAI,EAAE;AACzB,IAAA,MAAMiiB,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAACn2C,OAAO,CAAC;IAChD,MAAM00C,UAAU,GAAGzlC,cAAc,CAACE,OAAO,CAACsjC,oBAAoB,EAAEyD,SAAS,CAAC;IAC1E,IAAI,CAACxB,UAAU,EAAE;AACf,MAAA;AACF,IAAA;IAEA,MAAMpxB,IAAI,GAAGrU,cAAc,CAACE,OAAO,CAACgT,aAAa,EAAE+zB,SAAS,CAAC;IAE7DxB,UAAU,CAACvqC,SAAS,CAAC6H,MAAM,CAACJ,iBAAiB,EAAEqiB,IAAI,CAAC;AACpD,IAAA,IAAI3Q,IAAI,EAAE;MACRA,IAAI,CAACnZ,SAAS,CAAC6H,MAAM,CAACX,iBAAe,EAAE4iB,IAAI,CAAC;AAC9C,IAAA;AAEAygB,IAAAA,UAAU,CAAC9tC,YAAY,CAAC,eAAe,EAAEqtB,IAAI,CAAC;AAChD,EAAA;AAEA6hB,EAAAA,wBAAwBA,CAAC91C,OAAO,EAAE2oC,SAAS,EAAE9nC,KAAK,EAAE;AAClD,IAAA,IAAI,CAACb,OAAO,CAACqK,YAAY,CAACs+B,SAAS,CAAC,EAAE;AACpC3oC,MAAAA,OAAO,CAAC4G,YAAY,CAAC+hC,SAAS,EAAE9nC,KAAK,CAAC;AACxC,IAAA;AACF,EAAA;EAEA00C,aAAaA,CAACl3B,IAAI,EAAE;AAClB,IAAA,OAAOA,IAAI,CAAClU,SAAS,CAACrG,QAAQ,CAAC8N,iBAAiB,CAAC;AACnD,EAAA;;AAEA;EACAokC,gBAAgBA,CAAC33B,IAAI,EAAE;AACrB,IAAA,OAAOA,IAAI,CAAC/O,OAAO,CAAC2lC,mBAAmB,CAAC,GAAG52B,IAAI,GAAGpP,cAAc,CAACE,OAAO,CAAC8lC,mBAAmB,EAAE52B,IAAI,CAAC;AACrG,EAAA;;AAEA;EACA83B,gBAAgBA,CAAC93B,IAAI,EAAE;AACrB,IAAA,OAAOA,IAAI,CAACvU,OAAO,CAACkrC,cAAc,CAAC,IAAI32B,IAAI;AAC7C,EAAA;AACF;;AAEA;AACA;AACA;;AAEAjc,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,oBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF,EAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC4C,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;IACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;AAEA,EAAA,IAAIzG,UAAU,CAAC,IAAI,CAAC,EAAE;AACpB,IAAA;AACF,EAAA;EAEAmrC,GAAG,CAAC3mC,mBAAmB,CAAC,IAAI,CAAC,CAACoQ,IAAI,EAAE;AACtC,CAAC,CAAC;;AAEF;AACA;AACA;AACAxc,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,mBAAmB,EAAE,MAAM;EACjD,KAAK,MAAM5S,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC8xC,2BAA2B,CAAC,EAAE;AACtEC,IAAAA,GAAG,CAAC3mC,mBAAmB,CAACxO,OAAO,CAAC;AAClC,EAAA;AACF,CAAC,CAAC;;AC/RF;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMqoC,eAAe,GAAG,CAAA,SAAA,EAAYnoC,WAAS,CAAA,CAAE;AAC/C,MAAMooC,cAAc,GAAG,CAAA,QAAA,EAAWpoC,WAAS,CAAA,CAAE;AAC7C,MAAM49B,aAAa,GAAG,CAAA,OAAA,EAAU59B,WAAS,CAAA,CAAE;AAC3C,MAAM69B,cAAc,GAAG,CAAA,QAAA,EAAW79B,WAAS,CAAA,CAAE;AAC7C,MAAMoP,UAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,YAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMkP,UAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,WAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AAEvC,MAAMkD,eAAe,GAAG,MAAM;AAC9B,MAAMmlC,eAAe,GAAG,MAAM,CAAA;AAC9B,MAAMllC,eAAe,GAAG,MAAM;AAC9B,MAAMmlC,kBAAkB,GAAG,SAAS;AAEpC,MAAMhqC,aAAW,GAAG;AAClB8/B,EAAAA,SAAS,EAAE,SAAS;AACpBmK,EAAAA,QAAQ,EAAE,SAAS;AACnBjK,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAMjgC,SAAO,GAAG;AACd+/B,EAAAA,SAAS,EAAE,IAAI;AACfmK,EAAAA,QAAQ,EAAE,IAAI;AACdjK,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;;AAEA,MAAMkK,KAAK,SAAS/oC,aAAa,CAAC;AAChCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACggC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC+J,oBAAoB,GAAG,KAAK;IACjC,IAAI,CAACC,uBAAuB,GAAG,KAAK;IACpC,IAAI,CAACzJ,aAAa,EAAE;AACtB,EAAA;;AAEA;EACA,WAAW5gC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAmS,EAAAA,IAAIA,GAAG;IACL,MAAM+F,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,UAAU,CAAC;IAEjE,IAAIuH,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAAColC,aAAa,EAAE;AAEpB,IAAA,IAAI,IAAI,CAAChpC,OAAO,CAACy+B,SAAS,EAAE;MAC1B,IAAI,CAAC1+B,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAChF,eAAe,CAAC;AAC9C,IAAA;IAEA,MAAM+N,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACvR,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC01C,kBAAkB,CAAC;MAClDp0C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,WAAW,CAAC;MAEhD,IAAI,CAACy5B,kBAAkB,EAAE;IAC3B,CAAC;IAED,IAAI,CAAClpC,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACy1C,eAAe,CAAC,CAAA;AAC/C1rC,IAAAA,MAAM,CAAC,IAAI,CAAC+C,QAAQ,CAAC;IACrB,IAAI,CAACA,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC/E,eAAe,EAAEmlC,kBAAkB,CAAC;AAEhE,IAAA,IAAI,CAACnoC,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAACC,OAAO,CAACy+B,SAAS,CAAC;AACtE,EAAA;AAEA3tB,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAACo4B,OAAO,EAAE,EAAE;AACnB,MAAA;AACF,IAAA;IAEA,MAAMtxB,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,UAAU,CAAC;IAEjE,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,MAAM0N,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACvR,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACmgC,eAAe,CAAC,CAAA;MAC5C,IAAI,CAAC3oC,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC01C,kBAAkB,EAAEnlC,eAAe,CAAC;MACnEjP,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,YAAY,CAAC;IACnD,CAAC;IAED,IAAI,CAAC3P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACogC,kBAAkB,CAAC;AAC/C,IAAA,IAAI,CAACnoC,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAACC,OAAO,CAACy+B,SAAS,CAAC;AACtE,EAAA;AAEAr+B,EAAAA,OAAOA,GAAG;IACR,IAAI,CAAC4oC,aAAa,EAAE;AAEpB,IAAA,IAAI,IAAI,CAACE,OAAO,EAAE,EAAE;MAClB,IAAI,CAACnpC,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACuQ,eAAe,CAAC;AACjD,IAAA;IAEA,KAAK,CAACpD,OAAO,EAAE;AACjB,EAAA;AAEA8oC,EAAAA,OAAOA,GAAG;IACR,OAAO,IAAI,CAACnpC,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACuN,eAAe,CAAC;AAC1D,EAAA;;AAEA;AACAylC,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAI,CAAC,IAAI,CAACjpC,OAAO,CAAC4oC,QAAQ,EAAE;AAC1B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACE,oBAAoB,IAAI,IAAI,CAACC,uBAAuB,EAAE;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAChK,QAAQ,GAAGjhC,UAAU,CAAC,MAAM;MAC/B,IAAI,CAACgT,IAAI,EAAE;AACb,IAAA,CAAC,EAAE,IAAI,CAAC9Q,OAAO,CAAC2+B,KAAK,CAAC;AACxB,EAAA;AAEAwK,EAAAA,cAAcA,CAACh1C,KAAK,EAAEi1C,aAAa,EAAE;IACnC,QAAQj1C,KAAK,CAACM,IAAI;AAChB,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,UAAU;AAAE,QAAA;UACf,IAAI,CAACq0C,oBAAoB,GAAGM,aAAa;AACzC,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,SAAS;AACd,MAAA,KAAK,UAAU;AAAE,QAAA;UACf,IAAI,CAACL,uBAAuB,GAAGK,aAAa;AAC5C,UAAA;AACF,QAAA;AAKF;AAEA,IAAA,IAAIA,aAAa,EAAE;MACjB,IAAI,CAACJ,aAAa,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMK,WAAW,GAAGl1C,KAAK,CAAC6B,aAAa;AACvC,IAAA,IAAI,IAAI,CAAC+J,QAAQ,KAAKspC,WAAW,IAAI,IAAI,CAACtpC,QAAQ,CAAC9J,QAAQ,CAACozC,WAAW,CAAC,EAAE;AACxE,MAAA;AACF,IAAA;IAEA,IAAI,CAACJ,kBAAkB,EAAE;AAC3B,EAAA;AAEA3J,EAAAA,aAAaA,GAAG;AACd/qC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEyoC,eAAe,EAAEr0C,KAAK,IAAI,IAAI,CAACg1C,cAAc,CAACh1C,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1FI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE0oC,cAAc,EAAEt0C,KAAK,IAAI,IAAI,CAACg1C,cAAc,CAACh1C,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1FI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEk+B,aAAa,EAAE9pC,KAAK,IAAI,IAAI,CAACg1C,cAAc,CAACh1C,KAAK,EAAE,IAAI,CAAC,CAAC;AACxFI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEm+B,cAAc,EAAE/pC,KAAK,IAAI,IAAI,CAACg1C,cAAc,CAACh1C,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5F,EAAA;AAEA60C,EAAAA,aAAaA,GAAG;AACd75B,IAAAA,YAAY,CAAC,IAAI,CAAC4vB,QAAQ,CAAC;IAC3B,IAAI,CAACA,QAAQ,GAAG,IAAI;AACtB,EAAA;AACF;;AAEA;AACA;AACA;;AAEAx8B,oBAAoB,CAACsmC,KAAK,CAAC;;ACxM3B;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMjqC,IAAI,GAAG,SAAS;AACtB,MAAMuB,QAAQ,GAAG,YAAY;AAC7B,MAAME,SAAS,GAAG,CAAA,CAAA,EAAIF,QAAQ,CAAA,CAAE;AAEhC,MAAMmpC,YAAY,GAAG,CAAA,MAAA,EAASjpC,SAAS,CAAA,CAAE;AACzC,MAAMkpC,aAAa,GAAG,CAAA,OAAA,EAAUlpC,SAAS,CAAA,CAAE;AAC3C,MAAM29B,WAAW,GAAG,OAAO;AAE3B,MAAMh6B,oBAAoB,GAAG,4BAA4B;AAEzD,MAAMrF,WAAW,GAAG;AAClBm8B,EAAAA,SAAS,EAAE,QAAQ;AACnB9nC,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAM0L,OAAO,GAAG;AACdo8B,EAAAA,SAAS,EAAE,OAAO;AAClB9nC,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;;AAEA,MAAMw2C,OAAO,SAAS1pC,aAAa,CAAC;AAClC;EACA,WAAWpB,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,WAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,IAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;IACP,MAAMslC,WAAW,GAAGl1C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEupC,YAAY,CAAC;IAErE,IAAIG,WAAW,CAAC7lC,gBAAgB,EAAE;AAChC,MAAA;AACF,IAAA;IAEA,IAAI,CAAC8lC,QAAQ,EAAE;IAEfn1C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwpC,aAAa,CAAC;AACpD,EAAA;;AAEA;AACAG,EAAAA,QAAQA,GAAG;IACT,MAAM;MAAE5O,SAAS;AAAE9nC,MAAAA;KAAO,GAAG,IAAI,CAACgN,OAAO;IAEzC,IAAI86B,SAAS,KAAK,IAAI,EAAE;AACtB,MAAA,OAAM;AACR,IAAA;IAEA,IAAIA,SAAS,KAAK,OAAO,EAAE;MACzB,IAAI,CAAC/6B,QAAQ,CAACzD,SAAS,CAAC6H,MAAM,CAACnR,KAAK,CAAC;AACrC,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAAC+M,QAAQ,CAACrG,YAAY,CAACohC,SAAS,CAAC,KAAKlV,MAAM,CAAC5yB,KAAK,CAAC,EAAE;AAC3D,MAAA,IAAI,CAAC+M,QAAQ,CAAC9G,eAAe,CAAC6hC,SAAS,CAAC;AACxC,MAAA;AACF,IAAA;IAEA,IAAI,CAAC/6B,QAAQ,CAAChH,YAAY,CAAC+hC,SAAS,EAAE9nC,KAAK,CAAC;AAC9C,EAAA;AACF;;AAEA;AACA;AACA;;AAEA6P,mBAAmB,CAAC2mC,OAAO,EAAExL,WAAW,EAAEh6B,oBAAoB,EAAE,QAAQ,CAAC;;;;","x_google_ignoreList":[12,13,14,15,19]}
\ No newline at end of file
index 132bad2799d2bcf05ebaa71105cc560d1d2a6227..049d0633709352e14318198dd33b99837fe0114f 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 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: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||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 l of o)if(l===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,l]=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 r=getElementEvents(e),c=r[l]||(r[l]={}),d=findHandler(c,a,o?n:null);if(d)return void(d.oneOff=d.oneOff&&i);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=i,h.uidEvent=u,c[u]=h,e.addEventListener(l,h,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),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,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");l&&!t.includes(i)||removeHandler(e,r,a,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,r,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$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 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$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,s]of Object.entries(t)){const t=e[n],i=isElement$1(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)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...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$k="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$6="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$f="bs.button",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",CLASS_NAME_ACTIVE$4="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$j}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$i="carousel",DATA_KEY$e="bs.carousel",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$f}`,EVENT_SLID=`slid${EVENT_KEY$f}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$f}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$f}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$f}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$f}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$f}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_SETTLE_MAX_FRAMES=10,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$h={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$h={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._snapRestoreFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._snapRestoreFrame&&cancelAnimationFrame(this._snapRestoreFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$f),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$h.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_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())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:n,top:0,behavior:this._prefersReducedMotion()?"instant":"smooth"}),this._restoreSnapWhenSettled(s,e)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL$1()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const a=(e?t[0]:t[n]).cloneNode(!0);a.classList.add(CLASS_NAME_CLONE),a.classList.remove("active"),a.removeAttribute("id");for(const e of SelectorEngine.find("[id]",a))e.removeAttribute("id");a.setAttribute("aria-hidden","true"),a.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(a):(this._viewport.prepend(a),this._jumpScroll(this._scrollDelta(t[s]))),this._viewport.scrollBy({left:this._scrollDelta(a),top:0,behavior:"smooth"}),this._afterScrollSettles(()=>{a.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL$1()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_restoreSnapWhenSettled(e,t){this._afterScrollSettles(()=>{this._viewport.style.scrollSnapType="",this._observer||void 0===t||this._setActive(t),this._updateEndControls()},e)}_afterScrollSettles(e,t){if("undefined"==typeof requestAnimationFrame)return void e();null!==this._snapRestoreFrame&&cancelAnimationFrame(this._snapRestoreFrame);const n=this._viewport.scrollLeft;let s=n,i=0,o=0,a=!1;const l=()=>{const r=this._viewport.scrollLeft,c=void 0!==t&&Math.abs(r-t)<=1;if(Math.abs(r-n)>1&&(a=!0),a&&(i=Math.abs(r-s)<1?i+1:0),s=r,o+=1,c||a&&i>=3||!a&&o>=10)return this._snapRestoreFrame=null,void e();this._snapRestoreFrame=requestAnimationFrame(l)};this._snapRestoreFrame=requestAnimationFrame(l)}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(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"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL$1()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}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);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$h="collapse",DATA_KEY$d="bs.collapse",EVENT_KEY$e=`.${DATA_KEY$d}`,DATA_API_KEY$9=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$e}`,EVENT_SHOWN$6=`shown${EVENT_KEY$e}`,EVENT_HIDE$6=`hide${EVENT_KEY$e}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$e}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$e}.data-api`,CLASS_NAME_SHOW$5="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$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$6)},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$6).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"};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"}function getSideAxis(e){const t=e[0];return"t"===t||"b"===t?"y":"x"}function getAlignmentAxis(e){return getOppositeAxis(getSideAxis(e))}function getAlignmentSides(e,t,n){void 0===n&&(n=!1);const s=getAlignment(e),i=getAlignmentAxis(e),o=getAxisLength(i);let a="x"===i?s===(n?"end":"start")?"right":"left":"start"===s?"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.includes("start")?e.replace("start","end"):e.replace("end","start")}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,s){const i=getAlignment(e);let o=getSideList(getSide(e),"start"===n,s);return i&&(o=o.map(e=>e+"-"+i),t&&(o=o.concat(o.map(getOppositeAlignmentPlacement)))),o}function getOppositePlacement(e){const t=getSide(e);return oppositeSideMap[t]+e.slice(t.length)}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:s,height:i}=e;return{width:s,height:i,top:n,left:t,right:t+s,bottom:n+i,x:t,y:n}}function computeCoordsFromPlacement(e,t,n){let{reference:s,floating:i}=e;const o=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),r=getSide(t),c="y"===o,d=s.x+s.width/2-i.width/2,u=s.y+s.height/2-i.height/2,h=s[l]/2-i[l]/2;let _;switch(r){case"top":_={x:d,y:s.y-i.height};break;case"bottom":_={x:d,y:s.y+s.height};break;case"right":_={x:s.x+s.width,y:u};break;case"left":_={x:s.x-i.width,y:u};break;default:_={x:s.x,y:s.y}}switch(getAlignment(t)){case"start":_[a]-=h*(n&&c?-1:1);break;case"end":_[a]+=h*(n&&c?-1:1)}return _}async function detectOverflow(e,t){var n;void 0===t&&(t={});const{x:s,y:i,platform:o,rects:a,elements:l,strategy:r}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:_=0}=evaluate(t,e),m=getPaddingObject(_),g=l[h?"floating"===u?"reference":"floating":u],p=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})),E="floating"===u?{x:s,y:i,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:E,offsetParent:f,strategy:r}):E);return{top:(p.top-T.top+m.top)/v.y,bottom:(T.bottom-p.bottom+m.bottom)/v.y,left:(p.left-T.left+m.left)/v.x,right:(T.right-p.right+m.right)/v.x}}const MAX_RESET_COUNT=50,computePosition$1=async(e,t,n)=>{const{placement:s="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,l=a.detectOverflow?a:{...a,detectOverflow:detectOverflow},r=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:d,y:u}=computeCoordsFromPlacement(c,s,r),h=s,_=0;const m={};for(let n=0;n<o.length;n++){const g=o[n];if(!g)continue;const{name:p,fn:E}=g,{x:f,y:v,data:T,reset:b}=await E({x:d,y:u,initialPlacement:s,placement:h,strategy:i,middlewareData:m,rects:c,platform:l,elements:{reference:e,floating:t}});d=null!=f?f:d,u=null!=v?v:u,m[p]={...m[p],...T},b&&_<50&&(_++,"object"==typeof b&&(b.placement&&(h=b.placement),b.rects&&(c=!0===b.rects?await a.getElementRects({reference:e,floating:t,strategy:i}):b.rects),({x:d,y:u}=computeCoordsFromPlacement(c,h,r))),n=-1)}return{x:d,y:u,placement:h,strategy:i,middlewareData:m}},arrow$1=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:s,placement:i,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:s},_=getAlignmentAxis(i),m=getAxisLength(_),g=await a.getDimensions(c),p="y"===_,E=p?"top":"left",f=p?"bottom":"right",v=p?"clientHeight":"clientWidth",T=o.reference[m]+o.reference[_]-h[_]-o.floating[m],b=h[_]-o.reference[_],A=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let y=A?A[v]:0;y&&await(null==a.isElement?void 0:a.isElement(A))||(y=l.floating[v]||o.floating[m]);const D=T/2-b/2,S=y/2-g[m]/2-1,C=min(u[E],S),w=min(u[f],S),N=C,x=y-g[m]-w,L=y/2-g[m]/2+D,M=clamp(N,L,x),O=!r.arrow&&null!=getAlignment(i)&&L!==M&&o.reference[m]/2-(L<N?C:w)-g[m]/2<0,$=O?L<N?L-N:L-x:0;return{[_]:h[_]+$,data:{[_]:M,centerOffset:L-M-$,...O&&{alignmentOffset:$}},reset:O}}}),flip$1=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,s;const{placement:i,middlewareData:o,rects:a,initialPlacement:l,platform:r,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:_="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:g=!0,...p}=evaluate(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const E=getSide(i),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"!==m;!h&&A&&b.push(...getOppositeAxisPlacements(l,g,m,T));const y=[l,...b],D=await r.detectOverflow(t,p),S=[];let C=(null==(s=o.flip)?void 0:s.overflows)||[];if(d&&S.push(D[E]),u){const e=getAlignmentSides(i,a,T);S.push(D[e[0]],D[e[1]])}if(C=[...C,{placement:i,overflows:S}],!S.every(e=>e<=0)){var w,N;const e=((null==(w=o.flip)?void 0:w.index)||0)+1,t=y[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(_){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(i!==n)return{reset:{placement:n}}}return{}}}},originSides=new Set(["left","top"]);async function convertValueToCoords(e,t){const{placement:n,platform:s,elements:i}=e,o=await(null==s.isRTL?void 0:s.isRTL(i.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:_,alignmentAxis:m}="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*m:m),r?{x:_*d,y:h*c}:{x:h*c,y:_*d}}const offset$1=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,s;const{x:i,y:o,placement:a,middlewareData:l}=t,r=await convertValueToCoords(t,e);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(s=l.arrow)&&s.alignmentOffset?{}:{x:i+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:s,placement:i,platform:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:r={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=evaluate(e,t),d={x:n,y:s},u=await o.detectOverflow(t,c),h=getSideAxis(getSide(i)),_=getOppositeAxis(h);let m=d[_],g=d[h];if(a){const e="y"===_?"bottom":"right";m=clamp(m+u["y"===_?"top":"left"],m,m-u[e])}if(l){const e="y"===h?"bottom":"right";g=clamp(g+u["y"===h?"top":"left"],g,g-u[e])}const p=r.fn({...t,[_]:m,[h]:g});return{...p,data:{x:p.x-n,y:p.y-s,enabled:{[_]:a,[h]:l}}}}}};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)}function isOverflowElement(e){const{overflow:t,overflowX:n,overflowY:s,display:i}=getComputedStyle$1(e);return/auto|scroll|overlay|hidden|clip/.test(t+s+n)&&"inline"!==i&&"contents"!==i}function isTableElement(e){return/^(table|td|th)$/.test(getNodeName(e))}function isTopLayer(e){try{if(e.matches(":popover-open"))return!0}catch(e){}try{return e.matches(":modal")}catch(e){return!1}}const willChangeRe=/transform|translate|scale|rotate|perspective|filter/,containRe=/paint|layout|strict|content/,isNotNone=e=>!!e&&"none"!==e;let isWebKitValue;function isContainingBlock(e){const t=isElement(e)?getComputedStyle$1(e):e;return isNotNone(t.transform)||isNotNone(t.translate)||isNotNone(t.scale)||isNotNone(t.rotate)||isNotNone(t.perspective)||!isWebKit()&&(isNotNone(t.backdropFilter)||isNotNone(t.filter))||willChangeRe.test(t.willChange||"")||containRe.test(t.contain||"")}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 null==isWebKitValue&&(isWebKitValue="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),isWebKitValue}function isLastTraversableNode(e){return/^(html|body|#document)$/.test(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 s;void 0===t&&(t=[]),void 0===n&&(n=!0);const i=getNearestOverflowAncestor(e),o=i===(null==(s=e.ownerDocument)?void 0:s.body),a=getWindow(i);if(o){const e=getFrameElement(a);return t.concat(a,a.visualViewport||[],isOverflowElement(i)?i:[],e&&n?getOverflowAncestors(e):[])}return t.concat(i,getOverflowAncestors(i,[],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,s=parseFloat(t.height)||0;const i=isHTMLElement(e),o=i?e.offsetWidth:n,a=i?e.offsetHeight:s,l=round(n)!==o||round(s)!==a;return l&&(n=o,s=a),{width:n,height:s,$: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:s,height:i,$:o}=getCssDimensions(t);let a=(o?round(n.width):n.width)/s,l=(o?round(n.height):n.height)/i;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,s){void 0===t&&(t=!1),void 0===n&&(n=!1);const i=e.getBoundingClientRect(),o=unwrapElement(e);let a=createCoords(1);t&&(s?isElement(s)&&(a=getScale(s)):a=getScale(e));const l=shouldAddVisualOffsets(o,n,s)?getVisualOffsets(o):createCoords(0);let r=(i.left+l.x)/a.x,c=(i.top+l.y)/a.y,d=i.width/a.x,u=i.height/a.y;if(o){const e=getWindow(o),t=s&&isElement(s)?getWindow(s):s;let n=e,i=getFrameElement(n);for(;i&&s&&t!==n;){const e=getScale(i),t=i.getBoundingClientRect(),s=getComputedStyle$1(i),o=t.left+(i.clientLeft+parseFloat(s.paddingLeft))*e.x,a=t.top+(i.clientTop+parseFloat(s.paddingTop))*e.y;r*=e.x,c*=e.y,d*=e.x,u*=e.y,r+=o,c+=a,n=getWindow(i),i=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:s,strategy:i}=e;const o="fixed"===i,a=getDocumentElement(s),l=!!t&&isTopLayer(t.floating);if(s===a||l&&o)return n;let r={scrollLeft:0,scrollTop:0},c=createCoords(1);const d=createCoords(0),u=isHTMLElement(s);if((u||!u&&!o)&&(("body"!==getNodeName(s)||isOverflowElement(a))&&(r=getNodeScroll(s)),u)){const e=getBoundingClientRect(s);c=getScale(s),d.x=e.x+s.clientLeft,d.y=e.y+s.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),s=e.ownerDocument.body,i=max(t.scrollWidth,t.clientWidth,s.scrollWidth,s.clientWidth),o=max(t.scrollHeight,t.clientHeight,s.scrollHeight,s.clientHeight);let a=-n.scrollLeft+getWindowScrollBarX(e);const l=-n.scrollTop;return"rtl"===getComputedStyle$1(s).direction&&(a+=max(t.clientWidth,s.clientWidth)-i),{width:i,height:o,x:a,y:l}}const SCROLLBAR_MAX=25;function getViewportRect(e,t){const n=getWindow(e),s=getDocumentElement(e),i=n.visualViewport;let o=s.clientWidth,a=s.clientHeight,l=0,r=0;if(i){o=i.width,a=i.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=i.offsetLeft,r=i.offsetTop)}const c=getWindowScrollBarX(s);if(c<=0){const e=s.ownerDocument,t=e.body,n=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(s.clientWidth-t.clientWidth-i);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:l,y:r}}function getInnerBoundingClientRect(e,t){const n=getBoundingClientRect(e,!0,"fixed"===t),s=n.top+e.clientTop,i=n.left+e.clientLeft,o=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:i*o.x,y:s*o.y}}function getClientRectFromClippingAncestor(e,t,n){let s;if("viewport"===t)s=getViewportRect(e,n);else if("document"===t)s=getDocumentRect(getDocumentElement(e));else if(isElement(t))s=getInnerBoundingClientRect(t,n);else{const n=getVisualOffsets(e);s={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rectToClientRect(s)}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 s=getOverflowAncestors(e,[],!1).filter(e=>isElement(e)&&"body"!==getNodeName(e)),i=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||(i=null),(o?!n&&!i:!n&&"static"===t.position&&i&&("absolute"===i.position||"fixed"===i.position)||isOverflowElement(a)&&!n&&hasFixedPositionAncestor(e,a))?s=s.filter(e=>e!==a):i=t,a=getParentNode(a)}return t.set(e,s),s}function getClippingRect(e){let{element:t,boundary:n,rootBoundary:s,strategy:i}=e;const o=[..."clippingAncestors"===n?isTopLayer(t)?[]:getClippingElementAncestors(t,this._c):[].concat(n),s],a=getClientRectFromClippingAncestor(t,o[0],i);let l=a.top,r=a.right,c=a.bottom,d=a.left;for(let e=1;e<o.length;e++){const n=getClientRectFromClippingAncestor(t,o[e],i);l=max(n.top,l),r=min(n.right,r),c=min(n.bottom,c),d=max(n.left,d)}return{width:r-d,height:c-l,x:d,y:l}}function getDimensions(e){const{width:t,height:n}=getCssDimensions(e);return{width:t,height:n}}function getRectRelativeToOffsetParent(e,t,n){const s=isHTMLElement(t),i=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(i)}if(s||!s&&!o)if(("body"!==getNodeName(t)||isOverflowElement(i))&&(l=getNodeScroll(t)),s){const e=getBoundingClientRect(t,!0,o,t);r.x=e.x+t.clientLeft,r.y=e.y+t.clientTop}else i&&c();o&&!s&&i&&c();const d=!i||s||o?createCoords(0):getHTMLOffset(i,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 s=getTrueOffsetParent(e,t);for(;s&&isTableElement(s)&&isStaticPositioned(s);)s=getTrueOffsetParent(s,t);return s&&isLastTraversableNode(s)&&isStaticPositioned(s)&&!isContainingBlock(s)?n:s||getContainingBlock(e)||n}const getElementRects=async function(e){const t=this.getOffsetParent||getOffsetParent,n=this.getDimensions,s=await n(e.floating);return{reference:getRectRelativeToOffsetParent(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.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,s=null;const i=getDocumentElement(e);function o(){var e;clearTimeout(n),null==(e=s)||e.disconnect(),s=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:_}=c;if(l||t(),!h||!_)return;const m={rootMargin:-floor(u)+"px "+-floor(i.clientWidth-(d+h))+"px "+-floor(i.clientHeight-(u+_))+"px "+-floor(d)+"px",threshold:max(0,min(1,r))||1};let g=!0;function p(t){const s=t[0].intersectionRatio;if(s!==r){if(!g)return a();s?a(!1,s):n=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==s||rectsAreEqual(c,e.getBoundingClientRect())||a(),g=!1}try{s=new IntersectionObserver(p,{...m,root:i.ownerDocument})}catch(e){s=new IntersectionObserver(p,m)}s.observe(e)}(!0),o}function autoUpdate(e,t,n,s){void 0===s&&(s={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:r=!1}=s,c=unwrapElement(e),d=i||o?[...c?getOverflowAncestors(c):[],...t?getOverflowAncestors(t):[]]:[];d.forEach(e=>{i&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)});const u=c&&l?observeMove(c,n):null;let h,_=-1,m=null;a&&(m=new ResizeObserver(e=>{let[s]=e;s&&s.target===c&&m&&t&&(m.unobserve(t),cancelAnimationFrame(_),_=requestAnimationFrame(()=>{var e;null==(e=m)||e.observe(t)})),n()}),c&&!r&&m.observe(c),t&&m.observe(t));let g=r?getBoundingClientRect(e):null;return r&&function t(){const s=getBoundingClientRect(e);g&&!rectsAreEqual(g,s)&&n(),g=s,h=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{i&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)}),null==u||u(),null==(e=m)||e.disconnect(),m=null,r&&cancelAnimationFrame(h)}}const offset=offset$1,shift=shift$1,flip=flip$1,arrow=arrow$1,computePosition=(e,t,n)=>{const s=new Map,i={platform:platform,...n},o={...i.platform,_c:s};return computePosition$1(e,t,{...i,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+/),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$d=".bs.menu",DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY$1="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$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="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$4="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$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of 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$5,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$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of 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(),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:l}=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",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"),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$1()?n.right:n.left,a={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(s,i,a,l)}_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$1(),i=s?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=s?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===i&&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"),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.at(-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),l=e.target.matches(".submenu > .menu-item");if(!(s||n||i||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(!(i||o||a&&l)||!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(),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$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",ESCAPE_KEY="Escape",TAB_KEY="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$2=`change${EVENT_KEY$c}`,EVENT_SHOW$5=`show${EVENT_KEY$c}`,EVENT_SHOWN$4=`shown${EVENT_KEY$c}`,EVENT_HIDE$4=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$c}.data-api`,CLASS_NAME_SHOW$3="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$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).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$c),EventHandler.off(this._toggle,EVENT_KEY$c),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$2,{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.at(-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.at(-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 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: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||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 l of o)if(l===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,l]=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 r=getElementEvents(e),c=r[l]||(r[l]={}),d=findHandler(c,a,o?n:null);if(d)return void(d.oneOff=d.oneOff&&i);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=i,h.uidEvent=u,c[u]=h,e.addEventListener(l,h,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),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,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");l&&!t.includes(i)||removeHandler(e,r,a,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,r,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$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 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$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,s]of Object.entries(t)){const t=e[n],i=isElement$1(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){if(super(),!(e=getElement(e)))return;this._element=e,this._config=this._getConfig(t);const n=Data.get(this._element,this.constructor.DATA_KEY);n&&n.dispose(),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(()=>{this._element&&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)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...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},closest:(e,t)=>Element.prototype.closest.call(e,t),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$h="bs.alert",EVENT_KEY$i=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$6="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$g="bs.button",EVENT_KEY$h=`.${DATA_KEY$g}`,DATA_API_KEY$c=".data-api",CLASS_NAME_ACTIVE$4="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$h}.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="carousel",DATA_KEY$f="bs.carousel",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$g}`,EVENT_SLID=`slid${EVENT_KEY$g}`,EVENT_KEYDOWN$2=`keydown${EVENT_KEY$g}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$g}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$g}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$g}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$g}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$g}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_DURATION=300,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$i={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$i={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"},easeInOutCubic=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._scrollFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._scrollFrame&&cancelAnimationFrame(this._scrollFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$g),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$i.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$2,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())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._animateScroll(s,()=>{this._viewport.style.scrollSnapType="",this._observer||this._setActive(e),this._updateEndControls()})}_animateScroll(e,t){null!==this._scrollFrame&&(cancelAnimationFrame(this._scrollFrame),this._scrollFrame=null);const n=this._viewport.scrollLeft,s=e-n;if(this._prefersReducedMotion()||"undefined"==typeof requestAnimationFrame)return this._viewport.scrollTo({left:e,behavior:"instant"}),void t();let i=null;const o=a=>{null===i&&(i=a);const l=Math.min((a-i)/300,1);this._viewport.scrollTo({left:n+s*easeInOutCubic(l),behavior:"instant"}),l<1?this._scrollFrame=requestAnimationFrame(o):(this._viewport.scrollTo({left:e,behavior:"instant"}),this._scrollFrame=null,t())};this._scrollFrame=requestAnimationFrame(o)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL$1()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const a=(e?t[0]:t[n]).cloneNode(!0);a.classList.add(CLASS_NAME_CLONE),a.classList.remove("active"),a.removeAttribute("id");for(const e of SelectorEngine.find("[id]",a))e.removeAttribute("id");a.setAttribute("aria-hidden","true"),a.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(a):(this._viewport.prepend(a),this._jumpScroll(this._scrollDelta(t[s]))),this._animateScroll(this._viewport.scrollLeft+this._scrollDelta(a),()=>{a.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL$1()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(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"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL$1()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}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);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$i="collapse",DATA_KEY$e="bs.collapse",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$f}`,EVENT_SHOWN$6=`shown${EVENT_KEY$f}`,EVENT_HIDE$6=`hide${EVENT_KEY$f}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$f}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_SHOW$5="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$h={parent:null,toggle:!0},DefaultType$h={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$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}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$6)},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$6).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"};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"}function getSideAxis(e){const t=e[0];return"t"===t||"b"===t?"y":"x"}function getAlignmentAxis(e){return getOppositeAxis(getSideAxis(e))}function getAlignmentSides(e,t,n){void 0===n&&(n=!1);const s=getAlignment(e),i=getAlignmentAxis(e),o=getAxisLength(i);let a="x"===i?s===(n?"end":"start")?"right":"left":"start"===s?"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.includes("start")?e.replace("start","end"):e.replace("end","start")}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,s){const i=getAlignment(e);let o=getSideList(getSide(e),"start"===n,s);return i&&(o=o.map(e=>e+"-"+i),t&&(o=o.concat(o.map(getOppositeAlignmentPlacement)))),o}function getOppositePlacement(e){const t=getSide(e);return oppositeSideMap[t]+e.slice(t.length)}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:s,height:i}=e;return{width:s,height:i,top:n,left:t,right:t+s,bottom:n+i,x:t,y:n}}function computeCoordsFromPlacement(e,t,n){let{reference:s,floating:i}=e;const o=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),r=getSide(t),c="y"===o,d=s.x+s.width/2-i.width/2,u=s.y+s.height/2-i.height/2,h=s[l]/2-i[l]/2;let _;switch(r){case"top":_={x:d,y:s.y-i.height};break;case"bottom":_={x:d,y:s.y+s.height};break;case"right":_={x:s.x+s.width,y:u};break;case"left":_={x:s.x-i.width,y:u};break;default:_={x:s.x,y:s.y}}switch(getAlignment(t)){case"start":_[a]-=h*(n&&c?-1:1);break;case"end":_[a]+=h*(n&&c?-1:1)}return _}async function detectOverflow(e,t){var n;void 0===t&&(t={});const{x:s,y:i,platform:o,rects:a,elements:l,strategy:r}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:_=0}=evaluate(t,e),m=getPaddingObject(_),g=l[h?"floating"===u?"reference":"floating":u],p=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})),E="floating"===u?{x:s,y:i,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},b=rectToClientRect(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:E,offsetParent:f,strategy:r}):E);return{top:(p.top-b.top+m.top)/v.y,bottom:(b.bottom-p.bottom+m.bottom)/v.y,left:(p.left-b.left+m.left)/v.x,right:(b.right-p.right+m.right)/v.x}}const MAX_RESET_COUNT=50,computePosition$1=async(e,t,n)=>{const{placement:s="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,l=a.detectOverflow?a:{...a,detectOverflow:detectOverflow},r=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:d,y:u}=computeCoordsFromPlacement(c,s,r),h=s,_=0;const m={};for(let n=0;n<o.length;n++){const g=o[n];if(!g)continue;const{name:p,fn:E}=g,{x:f,y:v,data:b,reset:T}=await E({x:d,y:u,initialPlacement:s,placement:h,strategy:i,middlewareData:m,rects:c,platform:l,elements:{reference:e,floating:t}});d=null!=f?f:d,u=null!=v?v:u,m[p]={...m[p],...b},T&&_<50&&(_++,"object"==typeof T&&(T.placement&&(h=T.placement),T.rects&&(c=!0===T.rects?await a.getElementRects({reference:e,floating:t,strategy:i}):T.rects),({x:d,y:u}=computeCoordsFromPlacement(c,h,r))),n=-1)}return{x:d,y:u,placement:h,strategy:i,middlewareData:m}},arrow$1=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:s,placement:i,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:s},_=getAlignmentAxis(i),m=getAxisLength(_),g=await a.getDimensions(c),p="y"===_,E=p?"top":"left",f=p?"bottom":"right",v=p?"clientHeight":"clientWidth",b=o.reference[m]+o.reference[_]-h[_]-o.floating[m],T=h[_]-o.reference[_],A=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let y=A?A[v]:0;y&&await(null==a.isElement?void 0:a.isElement(A))||(y=l.floating[v]||o.floating[m]);const D=b/2-T/2,S=y/2-g[m]/2-1,C=min(u[E],S),N=min(u[f],S),w=C,x=y-g[m]-N,L=y/2-g[m]/2+D,M=clamp(w,L,x),O=!r.arrow&&null!=getAlignment(i)&&L!==M&&o.reference[m]/2-(L<w?C:N)-g[m]/2<0,$=O?L<w?L-w:L-x:0;return{[_]:h[_]+$,data:{[_]:M,centerOffset:L-M-$,...O&&{alignmentOffset:$}},reset:O}}}),flip$1=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,s;const{placement:i,middlewareData:o,rects:a,initialPlacement:l,platform:r,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:_="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:g=!0,...p}=evaluate(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const E=getSide(i),f=getSideAxis(l),v=getSide(l)===l,b=await(null==r.isRTL?void 0:r.isRTL(c.floating)),T=h||(v||!g?[getOppositePlacement(l)]:getExpandedPlacements(l)),A="none"!==m;!h&&A&&T.push(...getOppositeAxisPlacements(l,g,m,b));const y=[l,...T],D=await r.detectOverflow(t,p),S=[];let C=(null==(s=o.flip)?void 0:s.overflows)||[];if(d&&S.push(D[E]),u){const e=getAlignmentSides(i,a,b);S.push(D[e[0]],D[e[1]])}if(C=[...C,{placement:i,overflows:S}],!S.every(e=>e<=0)){var N,w;const e=((null==(N=o.flip)?void 0:N.index)||0)+1,t=y[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(_){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(i!==n)return{reset:{placement:n}}}return{}}}},originSides=new Set(["left","top"]);async function convertValueToCoords(e,t){const{placement:n,platform:s,elements:i}=e,o=await(null==s.isRTL?void 0:s.isRTL(i.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:_,alignmentAxis:m}="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*m:m),r?{x:_*d,y:h*c}:{x:h*c,y:_*d}}const offset$1=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,s;const{x:i,y:o,placement:a,middlewareData:l}=t,r=await convertValueToCoords(t,e);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(s=l.arrow)&&s.alignmentOffset?{}:{x:i+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:s,placement:i,platform:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:r={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=evaluate(e,t),d={x:n,y:s},u=await o.detectOverflow(t,c),h=getSideAxis(getSide(i)),_=getOppositeAxis(h);let m=d[_],g=d[h];if(a){const e="y"===_?"bottom":"right";m=clamp(m+u["y"===_?"top":"left"],m,m-u[e])}if(l){const e="y"===h?"bottom":"right";g=clamp(g+u["y"===h?"top":"left"],g,g-u[e])}const p=r.fn({...t,[_]:m,[h]:g});return{...p,data:{x:p.x-n,y:p.y-s,enabled:{[_]:a,[h]:l}}}}}};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)}function isOverflowElement(e){const{overflow:t,overflowX:n,overflowY:s,display:i}=getComputedStyle$1(e);return/auto|scroll|overlay|hidden|clip/.test(t+s+n)&&"inline"!==i&&"contents"!==i}function isTableElement(e){return/^(table|td|th)$/.test(getNodeName(e))}function isTopLayer(e){try{if(e.matches(":popover-open"))return!0}catch(e){}try{return e.matches(":modal")}catch(e){return!1}}const willChangeRe=/transform|translate|scale|rotate|perspective|filter/,containRe=/paint|layout|strict|content/,isNotNone=e=>!!e&&"none"!==e;let isWebKitValue;function isContainingBlock(e){const t=isElement(e)?getComputedStyle$1(e):e;return isNotNone(t.transform)||isNotNone(t.translate)||isNotNone(t.scale)||isNotNone(t.rotate)||isNotNone(t.perspective)||!isWebKit()&&(isNotNone(t.backdropFilter)||isNotNone(t.filter))||willChangeRe.test(t.willChange||"")||containRe.test(t.contain||"")}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 null==isWebKitValue&&(isWebKitValue="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),isWebKitValue}function isLastTraversableNode(e){return/^(html|body|#document)$/.test(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 s;void 0===t&&(t=[]),void 0===n&&(n=!0);const i=getNearestOverflowAncestor(e),o=i===(null==(s=e.ownerDocument)?void 0:s.body),a=getWindow(i);if(o){const e=getFrameElement(a);return t.concat(a,a.visualViewport||[],isOverflowElement(i)?i:[],e&&n?getOverflowAncestors(e):[])}return t.concat(i,getOverflowAncestors(i,[],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,s=parseFloat(t.height)||0;const i=isHTMLElement(e),o=i?e.offsetWidth:n,a=i?e.offsetHeight:s,l=round(n)!==o||round(s)!==a;return l&&(n=o,s=a),{width:n,height:s,$: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:s,height:i,$:o}=getCssDimensions(t);let a=(o?round(n.width):n.width)/s,l=(o?round(n.height):n.height)/i;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,s){void 0===t&&(t=!1),void 0===n&&(n=!1);const i=e.getBoundingClientRect(),o=unwrapElement(e);let a=createCoords(1);t&&(s?isElement(s)&&(a=getScale(s)):a=getScale(e));const l=shouldAddVisualOffsets(o,n,s)?getVisualOffsets(o):createCoords(0);let r=(i.left+l.x)/a.x,c=(i.top+l.y)/a.y,d=i.width/a.x,u=i.height/a.y;if(o){const e=getWindow(o),t=s&&isElement(s)?getWindow(s):s;let n=e,i=getFrameElement(n);for(;i&&s&&t!==n;){const e=getScale(i),t=i.getBoundingClientRect(),s=getComputedStyle$1(i),o=t.left+(i.clientLeft+parseFloat(s.paddingLeft))*e.x,a=t.top+(i.clientTop+parseFloat(s.paddingTop))*e.y;r*=e.x,c*=e.y,d*=e.x,u*=e.y,r+=o,c+=a,n=getWindow(i),i=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:s,strategy:i}=e;const o="fixed"===i,a=getDocumentElement(s),l=!!t&&isTopLayer(t.floating);if(s===a||l&&o)return n;let r={scrollLeft:0,scrollTop:0},c=createCoords(1);const d=createCoords(0),u=isHTMLElement(s);if((u||!u&&!o)&&(("body"!==getNodeName(s)||isOverflowElement(a))&&(r=getNodeScroll(s)),u)){const e=getBoundingClientRect(s);c=getScale(s),d.x=e.x+s.clientLeft,d.y=e.y+s.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),s=e.ownerDocument.body,i=max(t.scrollWidth,t.clientWidth,s.scrollWidth,s.clientWidth),o=max(t.scrollHeight,t.clientHeight,s.scrollHeight,s.clientHeight);let a=-n.scrollLeft+getWindowScrollBarX(e);const l=-n.scrollTop;return"rtl"===getComputedStyle$1(s).direction&&(a+=max(t.clientWidth,s.clientWidth)-i),{width:i,height:o,x:a,y:l}}const SCROLLBAR_MAX=25;function getViewportRect(e,t){const n=getWindow(e),s=getDocumentElement(e),i=n.visualViewport;let o=s.clientWidth,a=s.clientHeight,l=0,r=0;if(i){o=i.width,a=i.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=i.offsetLeft,r=i.offsetTop)}const c=getWindowScrollBarX(s);if(c<=0){const e=s.ownerDocument,t=e.body,n=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(s.clientWidth-t.clientWidth-i);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:l,y:r}}function getInnerBoundingClientRect(e,t){const n=getBoundingClientRect(e,!0,"fixed"===t),s=n.top+e.clientTop,i=n.left+e.clientLeft,o=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:i*o.x,y:s*o.y}}function getClientRectFromClippingAncestor(e,t,n){let s;if("viewport"===t)s=getViewportRect(e,n);else if("document"===t)s=getDocumentRect(getDocumentElement(e));else if(isElement(t))s=getInnerBoundingClientRect(t,n);else{const n=getVisualOffsets(e);s={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rectToClientRect(s)}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 s=getOverflowAncestors(e,[],!1).filter(e=>isElement(e)&&"body"!==getNodeName(e)),i=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||(i=null),(o?!n&&!i:!n&&"static"===t.position&&i&&("absolute"===i.position||"fixed"===i.position)||isOverflowElement(a)&&!n&&hasFixedPositionAncestor(e,a))?s=s.filter(e=>e!==a):i=t,a=getParentNode(a)}return t.set(e,s),s}function getClippingRect(e){let{element:t,boundary:n,rootBoundary:s,strategy:i}=e;const o=[..."clippingAncestors"===n?isTopLayer(t)?[]:getClippingElementAncestors(t,this._c):[].concat(n),s],a=getClientRectFromClippingAncestor(t,o[0],i);let l=a.top,r=a.right,c=a.bottom,d=a.left;for(let e=1;e<o.length;e++){const n=getClientRectFromClippingAncestor(t,o[e],i);l=max(n.top,l),r=min(n.right,r),c=min(n.bottom,c),d=max(n.left,d)}return{width:r-d,height:c-l,x:d,y:l}}function getDimensions(e){const{width:t,height:n}=getCssDimensions(e);return{width:t,height:n}}function getRectRelativeToOffsetParent(e,t,n){const s=isHTMLElement(t),i=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(i)}if(s||!s&&!o)if(("body"!==getNodeName(t)||isOverflowElement(i))&&(l=getNodeScroll(t)),s){const e=getBoundingClientRect(t,!0,o,t);r.x=e.x+t.clientLeft,r.y=e.y+t.clientTop}else i&&c();o&&!s&&i&&c();const d=!i||s||o?createCoords(0):getHTMLOffset(i,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 s=getTrueOffsetParent(e,t);for(;s&&isTableElement(s)&&isStaticPositioned(s);)s=getTrueOffsetParent(s,t);return s&&isLastTraversableNode(s)&&isStaticPositioned(s)&&!isContainingBlock(s)?n:s||getContainingBlock(e)||n}const getElementRects=async function(e){const t=this.getOffsetParent||getOffsetParent,n=this.getDimensions,s=await n(e.floating);return{reference:getRectRelativeToOffsetParent(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.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,s=null;const i=getDocumentElement(e);function o(){var e;clearTimeout(n),null==(e=s)||e.disconnect(),s=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:_}=c;if(l||t(),!h||!_)return;const m={rootMargin:-floor(u)+"px "+-floor(i.clientWidth-(d+h))+"px "+-floor(i.clientHeight-(u+_))+"px "+-floor(d)+"px",threshold:max(0,min(1,r))||1};let g=!0;function p(t){const s=t[0].intersectionRatio;if(s!==r){if(!g)return a();s?a(!1,s):n=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==s||rectsAreEqual(c,e.getBoundingClientRect())||a(),g=!1}try{s=new IntersectionObserver(p,{...m,root:i.ownerDocument})}catch(e){s=new IntersectionObserver(p,m)}s.observe(e)}(!0),o}function autoUpdate(e,t,n,s){void 0===s&&(s={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:r=!1}=s,c=unwrapElement(e),d=i||o?[...c?getOverflowAncestors(c):[],...t?getOverflowAncestors(t):[]]:[];d.forEach(e=>{i&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)});const u=c&&l?observeMove(c,n):null;let h,_=-1,m=null;a&&(m=new ResizeObserver(e=>{let[s]=e;s&&s.target===c&&m&&t&&(m.unobserve(t),cancelAnimationFrame(_),_=requestAnimationFrame(()=>{var e;null==(e=m)||e.observe(t)})),n()}),c&&!r&&m.observe(c),t&&m.observe(t));let g=r?getBoundingClientRect(e):null;return r&&function t(){const s=getBoundingClientRect(e);g&&!rectsAreEqual(g,s)&&n(),g=s,h=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{i&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)}),null==u||u(),null==(e=m)||e.disconnect(),m=null,r&&cancelAnimationFrame(h)}}const offset=offset$1,shift=shift$1,flip=flip$1,arrow=arrow$1,computePosition=(e,t,n)=>{const s=new Map,i={platform:platform,...n},o={...i.platform,_c:s};return computePosition$1(e,t,{...i,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+/),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$h="menu",DATA_KEY$d="bs.menu",EVENT_KEY$e=".bs.menu",DATA_API_KEY$9=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="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$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="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$4="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$g={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$g={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._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),!this._config.menu&&this._menu&&(this._parent=this._findWrapper(this._menu)),this._isSubmenu=this._parent.classList?.contains("submenu"),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}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$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of 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$5,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(){const e=SelectorEngine.closest(this._element,":has(.menu)");return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",e||this._parent)}_findWrapper(e){let t=this._element.parentNode;for(;t instanceof Element&&!t.contains(e);)t=t.parentNode;return t instanceof Element?t:this._element.parentNode}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of 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(),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:l}=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",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"),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.style.opacity="0",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.opacity=""}_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).then(e=>(t.style.opacity="",e));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$1()?n.right:n.left,a={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(s,i,a,l)}_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$1(),i=s?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=s?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===i&&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"),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.at(-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),l=e.target.matches(".submenu > .menu-item");if(!(s||n||i||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(!(i||o||a&&l)||!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(),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$g="combobox",DATA_KEY$c="bs.combobox",EVENT_KEY$d=`.${DATA_KEY$c}`,DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY="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$3=`change${EVENT_KEY$d}`,EVENT_SHOW$5=`show${EVENT_KEY$d}`,EVENT_SHOWN$4=`shown${EVENT_KEY$d}`,EVENT_HIDE$4=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$3="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$f={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$f={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$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).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$d),EventHandler.off(this._toggle,EVENT_KEY$d),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$3,{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.at(-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.at(-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)});
 /*! 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,s,i,o;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(s=null==(n=e.context.inputElement)?void 0:n.replaceWith)||s.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(o=(i=e.context.mainElement).replaceWith)||o.call(i,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:s,left:i}=getOffset(e),{vh:o,vw:a}=getViewportDimensions(),l=s-t,r=i-n;return{top:l,bottom:o-(l+e.clientHeight),left:r,right:a-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const s={top:!0,bottom:!0,left:!0,right:!0},i=[];if(!t||!e)return{canShow:s,parentPositions:i};const{bottom:o,top:a}=calculateAvailableSpace(e),{top:l,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:h}=getViewportDimensions(),_=h/2,m=u/2;return[{condition:l<m,position:"top"},{condition:l>m,position:"bottom"},{condition:r<_,position:"left"},{condition:r>_,position:"right"}].forEach(({condition:e,position:t})=>{e&&i.push(t)}),Object.assign(s,{top:c<=a-n,bottom:c<=o-n,left:d<=r,right:d<=h-r}),{canShow:s,parentPositions:i}}const handleDay=(e,t,n,s)=>{var i;const o=s.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==(i=null==l?void 0:l.textContent)?void 0:i.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,s])=>handleDay(e,n,s,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,s)=>{const i=getDate(n),o=getDate(s),a=new Date(i.getTime());for(;a<=o;a.setDate(a.getDate()+1))e.push(getDateString(a));return t});return e},[]),updateAttribute=(e,t,n,s="")=>{t?e.setAttribute(n,s):e.getAttribute(n)===s&&e.removeAttribute(n)},setDateModifier=(e,t,n,s,i,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"),s&&updateAttribute(s,u,"aria-disabled","true"),s&&updateAttribute(s,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(i),"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",""),s&&s.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"),s&&s.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]),s=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),i=getDate(o);updateAttribute(n,i>t&&i<s,"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),s=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-s);const i=new Date(n.getFullYear(),0,1),o=Math.ceil(((+n-+i)/864e5+1)/7);return{year:n.getFullYear(),week:o}},addWeekNumberForDate=(e,t,n)=>{const s=getWeekNumber(n,e.firstWeekday);s&&(t.dataset.vcDateWeekNumber=String(s.week))},setDaysAsDisabled=(e,t,n)=>{var s,i,o,a,l;const r=null==(s=e.disableWeekdays)?void 0:s.includes(n),c=e.disableAllDates&&!!(null==(i=e.context.enableDates)?void 0:i[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,s,i,o)=>{const a=getDate(i).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=i,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(i,l,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(s),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,i),setDaysAsDisabled(e,i,a),setDateModifier(e,t,r,c,a,i,o),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,s,i)=>{for(let o=1;o<=n;o++){const n=new Date(s,i,o);createDate(e,s,t,o,getDateString(n),"current")}},createDatesFromNextMonth=(e,t,n,s,i)=>{const o=i+1===12?s+1:s,a=i+1===12?"01":i+2<10?`0${i+2}`:i+2;for(let i=1;i<=n;i++){const n=i<10?`0${i}`:String(i);createDate(e,s,t,i,`${o}-${a}-${n}`,"next")}},createDatesFromPrevMonth=(e,t,n,s,i)=>{let o=new Date(n,s,0).getDate()-(i-1);const a=0===s?n-1:n,l=0===s?12:s<10?`0${s}`:s;for(let s=i;s>0;s--,o++)createDate(e,n,t,o,`${a}-${l}-${o}`,"prev")},createWeekNumbers=(e,t,n,s,i)=>{if(!e.enableWeekNumbers)return;s.textContent="";const o=document.createElement("b");o.className=e.styles.weekNumbersTitle,o.innerText="#",o.dataset.vcWeekNumbers="title",s.appendChild(o);const a=document.createElement("div");a.className=e.styles.weekNumbersContent,a.dataset.vcWeekNumbers="content",s.appendChild(a);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=i.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,s=getWeekNumber(n,e.firstWeekday);if(!s)return;const i=l.cloneNode(!0);i.innerText=String(s.week),i.dataset.vcWeekNumber=String(s.week),i.dataset.vcWeekYear=String(s.year),i.role="rowheader",i.ariaLabel=`${s.week}`,a.appendChild(i)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),s=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach((n,i)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const o=new Date(t);o.setMonth(o.getMonth()+i);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,_=[];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"),_.push(t)}let m=0,g=0;const p={addDate:e=>{_[m].appendChild(e),g++,g>=7&&(m++,g=0)}};createDatesFromPrevMonth(e,p,l,a,r),createDatesFromCurrentMonth(e,p,c,l,a),createDatesFromNextMonth(e,p,h,l,a);for(const e of _)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,s[i],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 s=(n.match(/\[(.*?)\]/)||[])[1],i=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),o=getComponent(i),a=o?o(e,null!=s?s:null):"";return e.sanitizerHTML(a)}).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),(t,n)=>{const s=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(s)}).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach(t=>{const s=t;e.layouts[s].length||(e.layouts[s]=n[s](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"]'),s=e.context.mainElement.querySelector('[data-vc="grid"]'),i=t.closest('[data-vc="column"]');return n&&n.remove(),s&&(s.dataset.vcGrid="hidden"),i&&(i.dataset.vcColumn=e.context.currentType),void(i&&(i.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,s)=>{e.style.visibility=n?"hidden":"",t.style.visibility=s?"hidden":""},handleDefaultType=(e,t,n)=>{const s=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),i=new Date(s.getTime()),o=new Date(s.getTime());i.setMonth(i.getMonth()-e.monthsToSwitch),o.setMonth(o.getMonth()+e.monthsToSwitch);const a=getDate(e.context.dateMin),l=getDate(e.context.dateMax);e.selectionYearsMode||(a.setFullYear(s.getFullYear()),l.setFullYear(s.getFullYear()));const r=!e.selectionMonthsMode||i.getFullYear()<a.getFullYear()||i.getFullYear()===a.getFullYear()&&i.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 s=getDate(e.context.dateMin),i=getDate(e.context.dateMax),o=!!(s.getFullYear()&&e.context.displayYear-7<=s.getFullYear()),a=!!(i.getFullYear()&&e.context.displayYear+7>=i.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,s,i)=>{const o=new Date(s.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),a=new Date(s.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[i].label),t.dataset[`vc${i.charAt(0).toUpperCase()+i.slice(1)}`]=String(c[i].id),t.ariaLabel=`${e.labels[i]} ${c[i].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[i]||"only-arrows"===d[i];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"]'),s=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,s,t.dataset.vc)))},setYearModifier=(e,t,n,s,i)=>{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"}};i&&(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)),s&&(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 s=e.context.mainElement.querySelectorAll('[data-vc="column"]'),i=Array.from(s).findIndex(e=>e.closest(`[data-vc-column="${t}"]`));return{currentValue:i>=0?Number(null==(n=s[i].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(i,0)}},createMonthEl=(e,t,n,s,i,o,a)=>{const l=t.cloneNode(!1);return l.className=e.styles.monthsMonth,l.innerText=s,l.ariaLabel=i,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,s;const i=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),o=i?Number(i.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),s=getDate(e.context.dateMax),i=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=o<=n.getFullYear()&&t<n.getMonth()+d||o>=s.getFullYear()&&t>s.getMonth()-i+d||o>s.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==(s=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||s.focus()},TimeInput=(e,t,n,s,i)=>`\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="${s}" ${i?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,s,i,o,a)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${s}" max="${i}" step="${o}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}">\n  </label>\n`,handleActions=(e,t,n,s)=>{({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)})[s](),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,s,i)=>{const o=o=>{const a="AM"===e.context.selectedKeeping?"PM":"AM",l=transformTime24(e.context.selectedHours,a);Number(l)<=s&&Number(l)>=i?(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,s)=>{e.value=n,t.value=s},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleInput$1=(e,t,n,s,i,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,s,"PM"),handleActions(e,c,transformTime12(r),i)},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,i)}}[e.selectionTimeMode]()},minute:(s,l,r)=>{if(!(s<=o&&s>=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,i)}},r=e=>{const t=Number(n.value),s=n.value.padStart(2,"0");l[i]&&l[i](t,s,e)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},updateInputAndTime=(e,t,n,s,i)=>{t.value=i,handleActions(e,n,i,s)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleRange=(e,t,n,s,i)=>{const o=o=>{const a=Number(t.value),l=t.value.padStart(2,"0"),r="hour"===i,c=24===e.selectionTimeMode,d=a>0&&a<12;r&&!c&&updateKeepingTime(e,s,0===a||d?"AM":"PM"),updateInputAndTime(e,n,o,i,!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"]'),s=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),i=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&&s&&i&&o))return;const l=e=>{e.target===n&&handleMouseOver(i),e.target===s&&handleMouseOver(o)},r=e=>{e.target===n&&handleMouseOut(i),e.target===s&&handleMouseOut(o)};return t.addEventListener("mouseover",l),t.addEventListener("mouseout",r),handleInput$1(e,n,i,a,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,s,o,a,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,i,a,"hour"),handleRange(e,s,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,s]=[e.timeMinHour,e.timeMaxHour],[i,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,s,e.timeStepHour,a)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,i,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,s,i)=>[...n,{id:i,titleShort:e.context.locale.weekdays.short[i],titleLong:s,isWeekend:t.includes(i)}],[]),s=[...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"),s.forEach(s=>{const i=n.cloneNode(!0);i.innerText=s.titleShort,i.className=e.styles.weekDay,i.role="columnheader",i.ariaLabel=s.titleLong,i.dataset.vcWeekDay=String(s.id),s.isWeekend&&(i.dataset.vcWeekDayOff=""),t.appendChild(i)})})},createYearEl=(e,t,n,s,i)=>{const o=t.cloneNode(!1);return o.className=e.styles.yearsYear,o.innerText=String(i),o.ariaLabel=String(i),o.role="gridcell",o.dataset.vcYearsYear=`${i}`,s&&(o.ariaDisabled="true"),s&&(o.tabIndex=-1),o.disabled=s,setYearModifier(e,o,"year",n===i,!1),o},createYears=(e,t)=>{var n;const s=(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 i=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!i)return;const o="multiple"!==e.type||e.context.selectedYear===s?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,s,n,t);i.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 s=0;s<e.length;s++)if(e[s].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,s=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,(e,t)=>t);if(!n||"system"===n.getAttribute(s))return void trackChangesThemeInSystemSettings(e,t);const i=n.getAttribute(s);i?(setTheme(e.context.mainElement,i),trackChangesHTMLElement(n,s,()=>{const t=n.getAttribute(s);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 s=new Date(`1978-01-0${t+1}T00:00:00.000Z`),i=s.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),o=s.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(i)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(o))},getLocaleMonth=(e,t,n)=>{const s=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),i=s.toLocaleString(n,{month:"short",timeZone:"UTC"}),o=s.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(i)),e.context.locale.months.long.push(capitalizeFirstLetter(o))},getLocale=e=>{var t,n,s,i,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==(i=null==(s=e.locale)?void 0:s.weekdays)?void 0:i.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 s=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==s.localName)return;const i=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),o=i.indexOf(s);if(-1===o)return;const a=(l=i[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(i.length-1,o+a),ArrowLeft:()=>Math.max(0,o-1),ArrowRight:()=>Math.min(i.length-1,o+1)}[t.key])();null==(n=i[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 s={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+s),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 s=t.dataset.vcDate,i=t.closest("[data-vc-date][data-vc-date-selected]"),o=canToggleSelection(e);if(i&&!o)return;const a=i?e.context.selectedDates.filter(e=>e!==s):n?[...e.context.selectedDates,s]:[s];setContext(e,"selectedDates",a)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const s=e.context.mainElement.getBoundingClientRect(),i=n.getBoundingClientRect();t.style.left=i.left-s.left+i.width/2+"px",t.style.top=i.bottom-s.top-i.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,i,s))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var s,i,o;if(!(null==(i=null==(s=state.self)?void 0:s.context)?void 0:i.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 s=e.closest("[data-vc-date]");if(!s||state.lastDateEl===s)return;state.lastDateEl=s,createDateRangeTooltip(state.self,state.tooltipEl,s),removeHoverEffect();const i=s.dataset.vcDate,o=getDate(state.self.context.selectedDates[0]),a=getDate(i),l=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${i}"]`),[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,s;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(s=state.self.context.disableDates)?void 0:s[0]))return;const i=getDate(state.self.context.selectedDates[0]),[o,a]=state.self.context.disableDates.map(e=>getDate(e)).reduce(([e,t],n)=>[i>=n?n:e,i<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),s=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",s),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,s]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],i=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],o=parseDates([`${n}:${s}`]).filter(t=>!e.context.disableDates.includes(t)),a=i?e.enableEdgeDatesOnly?[n,s]: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]"),s=t.dataset.vcDate,i=getDate(s).getDay();setDateModifier(e,e.context.selectedYear,t,n,i,s,"current")})},handleClickDate=(e,t)=>{var n;const s=t.target,i=s.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!i)return;const o=i.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=s.closest('[data-vc-date-month="prev"]'),l=s.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:s,columnID:i}=getColumnID(e,t);return"month"===e.context.currentType&&i>=0?n-i:"year"===e.context.currentType&&e.context.selectedYear!==s?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),s=getDate(e.context.dateMin),i=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:a}=getColumnID(e,"year"),l=e.context.selectedMonth<s.getMonth()&&n<=s.getFullYear(),r=e.context.selectedMonth>i.getMonth()-o+a&&n>=i.getFullYear(),c=n<s.getFullYear(),d=n>i.getFullYear(),u=l||c?s.getFullYear():r||d?i.getFullYear():n,h=l||c?s.getMonth():r||d?i.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"]'),s=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),i=Number(n.dataset.vcYear),o=getDate(e.context.dateMin),a=getDate(e.context.dateMax),l=s<o.getMonth()&&i<=o.getFullYear(),r=s>a.getMonth()&&i>=a.getFullYear();setContext(e,"selectedYear",i),setContext(e,"selectedMonth",l?o.getMonth():r?a.getMonth():s)},handleItemClick=(e,t,n,s)=>{var i;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,s);setContext(e,"selectedYear",Number(s.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,s);setContext(e,"selectedMonth",Number(s.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==(i=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||i.focus()):setYearModifier(e,s,n,!0,!0)},handleClickType=(e,t,n)=>{var s;const i=t.target,o=i.closest(`[data-vc="${n}"]`),a={year:()=>createYears(e,i),month:()=>createMonths(e,i)};if(o&&e.onClickTitle&&e.onClickTitle(e,t),o&&e.context.currentType!==n)return a[n]();const l=i.closest(`[data-vc-${n}s-${n}]`);if(l)return handleItemClick(e,t,n,l);const r=i.closest('[data-vc="grid"]'),c=i.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==(s=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||s.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach(s=>{n[s]&&t.target&&handleClickType(e,t,s)})},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),s=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!s[0])return;const i=Number(n.innerText),o=Number(n.dataset.vcWeekYear),a=Array.from(s).filter(e=>Number(e.dataset.vcDateWeekNumber)===i);e.onClickWeekNumber(e,i,o,a,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),s=t.target.closest('[data-vc="column"]'),i=s?s.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!i[0])return;const o=Number(n.dataset.vcWeekDay),a=Array.from(i).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,s;const i=resolveDate(e.dateMin,e.dateMin),o=resolveDate(e.dateMax,e.dateMax),a=resolveDate(e.displayDateMin,i),l=resolveDate(e.displayDateMax,o);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",a?getDate(i)>=getDate(a)?i:a:i),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==(s=e.context.enableDates)?void 0:s[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?i: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,s=new Date,new Date(n).getTime()>s.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,s;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,s=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),s?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,s;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const i=12===e.selectionTimeMode,o=i?/^(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!=(s=null==(n=null==(t=e.selectedTime)?void 0:t.match(o))?void 0:n.slice(1))?s:[];a?i&&!r&&(r="AM"):(a=i?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),l=String(e.timeMinMinute),r=i?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:s,time:i,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=i?r.time:e.context.selectedTime,e.selectedDates="only-first"===s&&(null==(l=e.context.selectedDates)?void 0:l[0])?[e.context.selectedDates[0]]:!0===s?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&&s&&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,s=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener("focus",s);const i=t=>{const n="Tab"===t.key&&!t.shiftKey,s=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||s)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const s=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),i=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>s(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:s(e.context.mainElement)?e.context.mainElement:null;!i||i.tabIndex<0||(t.preventDefault(),i.focus())})(t)};return e.context.inputElement.addEventListener("keydown",i),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",s),e.context.inputElement.removeEventListener("keydown",i)}},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 s=0;s<n.length;s++){const i=n[s];"object"!=typeof e[i]||"object"!=typeof t[i]||t[i]instanceof Date||Array.isArray(t[i])?void 0!==t[i]&&(e[i]=t[i]):replaceProperties(e[i],t[i])}},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:s,parentPositions:i}=getAvailablePosition(e,t),o=s.left&&s.right;return(o&&s.bottom?"center":o&&s.top?["top","center"]:Array.isArray(i)?["bottom"===i[0]?"top":"bottom",...i.slice(1)]:i)||n}const setPosition=(e,t,n)=>{if(!e)return;const s="auto"===n?findBestPickerPosition(e,t):n,i={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},o=Array.isArray(s)?s[0]:"bottom",a=Array.isArray(s)?s[1]:s;t.dataset.vcPosition=o;const{top:l,left:r}=getOffset(e),c=l+i[o];let d=r+i[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 s=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener("click",s,{capture:!0}),e.context.cleanupHandlers.push(()=>document.removeEventListener("click",s,{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 s;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!=(s=e.memoizedElements.get(t))?s: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$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_CHANGE$1=`change${EVENT_KEY$b}`,EVENT_SHOW$4=`show${EVENT_KEY$b}`,EVENT_SHOWN$3=`shown${EVENT_KEY$b}`,EVENT_HIDE$3=`hide${EVENT_KEY$b}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$b}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$b}.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$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).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$1,{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$b}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.body.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.body.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$d="dialog",DATA_KEY$9="bs.dialog",EVENT_KEY$a=`.${DATA_KEY$9}`,DATA_API_KEY$5=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$a}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$a}`,EVENT_CANCEL=`cancel${EVENT_KEY$a}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$a}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$c={backdrop:!0,keyboard:!0,modal:!0},DefaultType$c={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}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$3,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){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$a}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$c="navoverflow",DATA_KEY$8="bs.navoverflow",EVENT_KEY$9=`.${DATA_KEY$8}`,EVENT_UPDATE=`update${EVENT_KEY$9}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$9}`,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",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$b={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",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={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",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._collapseBelow=0,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._collapseBelow=this._resolveCollapseBelow(),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=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_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");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,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="swipe",EVENT_KEY$8=".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$a={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$a={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(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._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_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$a="drawer",DATA_KEY$7="bs.drawer",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$7}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$7}`,EVENT_RESIZE=`resize${EVENT_KEY$7}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$7}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$9={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$9={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL$1()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL$1()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}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("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$9="strength",DATA_KEY$6="bs.strength",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$6}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$8={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$8={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$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}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$6}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$8="otpInput",DATA_KEY$5="bs.otpInput",EVENT_KEY$5=`.${DATA_KEY$5}`,DATA_API_KEY$2=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$5}`,EVENT_INPUT=`input${EVENT_KEY$5}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$5}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT="input",SYNC_EVENTS=["blur","keyup","click","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$7={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$7={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus();const e=this._input.value.length;this._input.setSelectionRange(e,e),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onFocus=()=>this.focus(),this._onSync=()=>this._render(),EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),this._render(),EventHandler.trigger(this._element,EVENT_INPUT,{value:this._input.value}),this._checkComplete()}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$7="chips",DATA_KEY$4="bs.chips",EVENT_KEY$4=".bs.chips",DATA_API_KEY$1=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$6={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$6={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),a=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=a;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.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=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...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$1(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$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"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),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 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 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:l,middlewareData:r}=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",l),n&&r.arrow){const{x:e,y:t}=r.arrow,s=l.startsWith("top")||l.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);t&&Tooltip.getOrCreateInstance(t)};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);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};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"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';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=e.key===HOME_KEY?t[0]:t.at(-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,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,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,s,i,o;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(s=null==(n=e.context.inputElement)?void 0:n.replaceWith)||s.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(o=(i=e.context.mainElement).replaceWith)||o.call(i,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:s,left:i}=getOffset(e),{vh:o,vw:a}=getViewportDimensions(),l=s-t,r=i-n;return{top:l,bottom:o-(l+e.clientHeight),left:r,right:a-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const s={top:!0,bottom:!0,left:!0,right:!0},i=[];if(!t||!e)return{canShow:s,parentPositions:i};const{bottom:o,top:a}=calculateAvailableSpace(e),{top:l,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:h}=getViewportDimensions(),_=h/2,m=u/2;return[{condition:l<m,position:"top"},{condition:l>m,position:"bottom"},{condition:r<_,position:"left"},{condition:r>_,position:"right"}].forEach(({condition:e,position:t})=>{e&&i.push(t)}),Object.assign(s,{top:c<=a-n,bottom:c<=o-n,left:d<=r,right:d<=h-r}),{canShow:s,parentPositions:i}}const handleDay=(e,t,n,s)=>{var i;const o=s.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==(i=null==l?void 0:l.textContent)?void 0:i.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,s])=>handleDay(e,n,s,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,s)=>{const i=getDate(n),o=getDate(s),a=new Date(i.getTime());for(;a<=o;a.setDate(a.getDate()+1))e.push(getDateString(a));return t});return e},[]),updateAttribute=(e,t,n,s="")=>{t?e.setAttribute(n,s):e.getAttribute(n)===s&&e.removeAttribute(n)},setDateModifier=(e,t,n,s,i,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"),s&&updateAttribute(s,u,"aria-disabled","true"),s&&updateAttribute(s,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(i),"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",""),s&&s.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"),s&&s.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]),s=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),i=getDate(o);updateAttribute(n,i>t&&i<s,"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),s=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-s);const i=new Date(n.getFullYear(),0,1),o=Math.ceil(((+n-+i)/864e5+1)/7);return{year:n.getFullYear(),week:o}},addWeekNumberForDate=(e,t,n)=>{const s=getWeekNumber(n,e.firstWeekday);s&&(t.dataset.vcDateWeekNumber=String(s.week))},setDaysAsDisabled=(e,t,n)=>{var s,i,o,a,l;const r=null==(s=e.disableWeekdays)?void 0:s.includes(n),c=e.disableAllDates&&!!(null==(i=e.context.enableDates)?void 0:i[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,s,i,o)=>{const a=getDate(i).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=i,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(i,l,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(s),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,i),setDaysAsDisabled(e,i,a),setDateModifier(e,t,r,c,a,i,o),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,s,i)=>{for(let o=1;o<=n;o++){const n=new Date(s,i,o);createDate(e,s,t,o,getDateString(n),"current")}},createDatesFromNextMonth=(e,t,n,s,i)=>{const o=i+1===12?s+1:s,a=i+1===12?"01":i+2<10?`0${i+2}`:i+2;for(let i=1;i<=n;i++){const n=i<10?`0${i}`:String(i);createDate(e,s,t,i,`${o}-${a}-${n}`,"next")}},createDatesFromPrevMonth=(e,t,n,s,i)=>{let o=new Date(n,s,0).getDate()-(i-1);const a=0===s?n-1:n,l=0===s?12:s<10?`0${s}`:s;for(let s=i;s>0;s--,o++)createDate(e,n,t,o,`${a}-${l}-${o}`,"prev")},createWeekNumbers=(e,t,n,s,i)=>{if(!e.enableWeekNumbers)return;s.textContent="";const o=document.createElement("b");o.className=e.styles.weekNumbersTitle,o.innerText="#",o.dataset.vcWeekNumbers="title",s.appendChild(o);const a=document.createElement("div");a.className=e.styles.weekNumbersContent,a.dataset.vcWeekNumbers="content",s.appendChild(a);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=i.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,s=getWeekNumber(n,e.firstWeekday);if(!s)return;const i=l.cloneNode(!0);i.innerText=String(s.week),i.dataset.vcWeekNumber=String(s.week),i.dataset.vcWeekYear=String(s.year),i.role="rowheader",i.ariaLabel=`${s.week}`,a.appendChild(i)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),s=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach((n,i)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const o=new Date(t);o.setMonth(o.getMonth()+i);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,_=[];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"),_.push(t)}let m=0,g=0;const p={addDate:e=>{_[m].appendChild(e),g++,g>=7&&(m++,g=0)}};createDatesFromPrevMonth(e,p,l,a,r),createDatesFromCurrentMonth(e,p,c,l,a),createDatesFromNextMonth(e,p,h,l,a);for(const e of _)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,s[i],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 s=(n.match(/\[(.*?)\]/)||[])[1],i=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),o=getComponent(i),a=o?o(e,null!=s?s:null):"";return e.sanitizerHTML(a)}).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),(t,n)=>{const s=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(s)}).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach(t=>{const s=t;e.layouts[s].length||(e.layouts[s]=n[s](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"]'),s=e.context.mainElement.querySelector('[data-vc="grid"]'),i=t.closest('[data-vc="column"]');return n&&n.remove(),s&&(s.dataset.vcGrid="hidden"),i&&(i.dataset.vcColumn=e.context.currentType),void(i&&(i.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,s)=>{e.style.visibility=n?"hidden":"",t.style.visibility=s?"hidden":""},handleDefaultType=(e,t,n)=>{const s=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),i=new Date(s.getTime()),o=new Date(s.getTime());i.setMonth(i.getMonth()-e.monthsToSwitch),o.setMonth(o.getMonth()+e.monthsToSwitch);const a=getDate(e.context.dateMin),l=getDate(e.context.dateMax);e.selectionYearsMode||(a.setFullYear(s.getFullYear()),l.setFullYear(s.getFullYear()));const r=!e.selectionMonthsMode||i.getFullYear()<a.getFullYear()||i.getFullYear()===a.getFullYear()&&i.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 s=getDate(e.context.dateMin),i=getDate(e.context.dateMax),o=!!(s.getFullYear()&&e.context.displayYear-7<=s.getFullYear()),a=!!(i.getFullYear()&&e.context.displayYear+7>=i.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,s,i)=>{const o=new Date(s.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),a=new Date(s.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[i].label),t.dataset[`vc${i.charAt(0).toUpperCase()+i.slice(1)}`]=String(c[i].id),t.ariaLabel=`${e.labels[i]} ${c[i].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[i]||"only-arrows"===d[i];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"]'),s=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,s,t.dataset.vc)))},setYearModifier=(e,t,n,s,i)=>{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"}};i&&(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)),s&&(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 s=e.context.mainElement.querySelectorAll('[data-vc="column"]'),i=Array.from(s).findIndex(e=>e.closest(`[data-vc-column="${t}"]`));return{currentValue:i>=0?Number(null==(n=s[i].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(i,0)}},createMonthEl=(e,t,n,s,i,o,a)=>{const l=t.cloneNode(!1);return l.className=e.styles.monthsMonth,l.innerText=s,l.ariaLabel=i,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,s;const i=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),o=i?Number(i.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),s=getDate(e.context.dateMax),i=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=o<=n.getFullYear()&&t<n.getMonth()+d||o>=s.getFullYear()&&t>s.getMonth()-i+d||o>s.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==(s=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||s.focus()},TimeInput=(e,t,n,s,i)=>`\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="${s}" ${i?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,s,i,o,a)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${s}" max="${i}" step="${o}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}">\n  </label>\n`,handleActions=(e,t,n,s)=>{({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)})[s](),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,s,i)=>{const o=o=>{const a="AM"===e.context.selectedKeeping?"PM":"AM",l=transformTime24(e.context.selectedHours,a);Number(l)<=s&&Number(l)>=i?(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,s)=>{e.value=n,t.value=s},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleInput$1=(e,t,n,s,i,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,s,"PM"),handleActions(e,c,transformTime12(r),i)},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,i)}}[e.selectionTimeMode]()},minute:(s,l,r)=>{if(!(s<=o&&s>=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,i)}},r=e=>{const t=Number(n.value),s=n.value.padStart(2,"0");l[i]&&l[i](t,s,e)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},updateInputAndTime=(e,t,n,s,i)=>{t.value=i,handleActions(e,n,i,s)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleRange=(e,t,n,s,i)=>{const o=o=>{const a=Number(t.value),l=t.value.padStart(2,"0"),r="hour"===i,c=24===e.selectionTimeMode,d=a>0&&a<12;r&&!c&&updateKeepingTime(e,s,0===a||d?"AM":"PM"),updateInputAndTime(e,n,o,i,!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"]'),s=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),i=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&&s&&i&&o))return;const l=e=>{e.target===n&&handleMouseOver(i),e.target===s&&handleMouseOver(o)},r=e=>{e.target===n&&handleMouseOut(i),e.target===s&&handleMouseOut(o)};return t.addEventListener("mouseover",l),t.addEventListener("mouseout",r),handleInput$1(e,n,i,a,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,s,o,a,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,i,a,"hour"),handleRange(e,s,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,s]=[e.timeMinHour,e.timeMaxHour],[i,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,s,e.timeStepHour,a)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,i,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,s,i)=>[...n,{id:i,titleShort:e.context.locale.weekdays.short[i],titleLong:s,isWeekend:t.includes(i)}],[]),s=[...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"),s.forEach(s=>{const i=n.cloneNode(!0);i.innerText=s.titleShort,i.className=e.styles.weekDay,i.role="columnheader",i.ariaLabel=s.titleLong,i.dataset.vcWeekDay=String(s.id),s.isWeekend&&(i.dataset.vcWeekDayOff=""),t.appendChild(i)})})},createYearEl=(e,t,n,s,i)=>{const o=t.cloneNode(!1);return o.className=e.styles.yearsYear,o.innerText=String(i),o.ariaLabel=String(i),o.role="gridcell",o.dataset.vcYearsYear=`${i}`,s&&(o.ariaDisabled="true"),s&&(o.tabIndex=-1),o.disabled=s,setYearModifier(e,o,"year",n===i,!1),o},createYears=(e,t)=>{var n;const s=(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 i=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!i)return;const o="multiple"!==e.type||e.context.selectedYear===s?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,s,n,t);i.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 s=0;s<e.length;s++)if(e[s].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,s=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,(e,t)=>t);if(!n||"system"===n.getAttribute(s))return void trackChangesThemeInSystemSettings(e,t);const i=n.getAttribute(s);i?(setTheme(e.context.mainElement,i),trackChangesHTMLElement(n,s,()=>{const t=n.getAttribute(s);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 s=new Date(`1978-01-0${t+1}T00:00:00.000Z`),i=s.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),o=s.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(i)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(o))},getLocaleMonth=(e,t,n)=>{const s=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),i=s.toLocaleString(n,{month:"short",timeZone:"UTC"}),o=s.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(i)),e.context.locale.months.long.push(capitalizeFirstLetter(o))},getLocale=e=>{var t,n,s,i,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==(i=null==(s=e.locale)?void 0:s.weekdays)?void 0:i.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 s=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==s.localName)return;const i=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),o=i.indexOf(s);if(-1===o)return;const a=(l=i[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(i.length-1,o+a),ArrowLeft:()=>Math.max(0,o-1),ArrowRight:()=>Math.min(i.length-1,o+1)}[t.key])();null==(n=i[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 s={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+s),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 s=t.dataset.vcDate,i=t.closest("[data-vc-date][data-vc-date-selected]"),o=canToggleSelection(e);if(i&&!o)return;const a=i?e.context.selectedDates.filter(e=>e!==s):n?[...e.context.selectedDates,s]:[s];setContext(e,"selectedDates",a)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const s=e.context.mainElement.getBoundingClientRect(),i=n.getBoundingClientRect();t.style.left=i.left-s.left+i.width/2+"px",t.style.top=i.bottom-s.top-i.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,i,s))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var s,i,o;if(!(null==(i=null==(s=state.self)?void 0:s.context)?void 0:i.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 s=e.closest("[data-vc-date]");if(!s||state.lastDateEl===s)return;state.lastDateEl=s,createDateRangeTooltip(state.self,state.tooltipEl,s),removeHoverEffect();const i=s.dataset.vcDate,o=getDate(state.self.context.selectedDates[0]),a=getDate(i),l=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${i}"]`),[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,s;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(s=state.self.context.disableDates)?void 0:s[0]))return;const i=getDate(state.self.context.selectedDates[0]),[o,a]=state.self.context.disableDates.map(e=>getDate(e)).reduce(([e,t],n)=>[i>=n?n:e,i<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),s=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",s),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,s]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],i=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],o=parseDates([`${n}:${s}`]).filter(t=>!e.context.disableDates.includes(t)),a=i?e.enableEdgeDatesOnly?[n,s]: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]"),s=t.dataset.vcDate,i=getDate(s).getDay();setDateModifier(e,e.context.selectedYear,t,n,i,s,"current")})},handleClickDate=(e,t)=>{var n;const s=t.target,i=s.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!i)return;const o=i.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=s.closest('[data-vc-date-month="prev"]'),l=s.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:s,columnID:i}=getColumnID(e,t);return"month"===e.context.currentType&&i>=0?n-i:"year"===e.context.currentType&&e.context.selectedYear!==s?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),s=getDate(e.context.dateMin),i=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:a}=getColumnID(e,"year"),l=e.context.selectedMonth<s.getMonth()&&n<=s.getFullYear(),r=e.context.selectedMonth>i.getMonth()-o+a&&n>=i.getFullYear(),c=n<s.getFullYear(),d=n>i.getFullYear(),u=l||c?s.getFullYear():r||d?i.getFullYear():n,h=l||c?s.getMonth():r||d?i.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"]'),s=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),i=Number(n.dataset.vcYear),o=getDate(e.context.dateMin),a=getDate(e.context.dateMax),l=s<o.getMonth()&&i<=o.getFullYear(),r=s>a.getMonth()&&i>=a.getFullYear();setContext(e,"selectedYear",i),setContext(e,"selectedMonth",l?o.getMonth():r?a.getMonth():s)},handleItemClick=(e,t,n,s)=>{var i;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,s);setContext(e,"selectedYear",Number(s.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,s);setContext(e,"selectedMonth",Number(s.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==(i=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||i.focus()):setYearModifier(e,s,n,!0,!0)},handleClickType=(e,t,n)=>{var s;const i=t.target,o=i.closest(`[data-vc="${n}"]`),a={year:()=>createYears(e,i),month:()=>createMonths(e,i)};if(o&&e.onClickTitle&&e.onClickTitle(e,t),o&&e.context.currentType!==n)return a[n]();const l=i.closest(`[data-vc-${n}s-${n}]`);if(l)return handleItemClick(e,t,n,l);const r=i.closest('[data-vc="grid"]'),c=i.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==(s=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||s.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach(s=>{n[s]&&t.target&&handleClickType(e,t,s)})},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),s=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!s[0])return;const i=Number(n.innerText),o=Number(n.dataset.vcWeekYear),a=Array.from(s).filter(e=>Number(e.dataset.vcDateWeekNumber)===i);e.onClickWeekNumber(e,i,o,a,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),s=t.target.closest('[data-vc="column"]'),i=s?s.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!i[0])return;const o=Number(n.dataset.vcWeekDay),a=Array.from(i).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,s;const i=resolveDate(e.dateMin,e.dateMin),o=resolveDate(e.dateMax,e.dateMax),a=resolveDate(e.displayDateMin,i),l=resolveDate(e.displayDateMax,o);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",a?getDate(i)>=getDate(a)?i:a:i),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==(s=e.context.enableDates)?void 0:s[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?i: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,s=new Date,new Date(n).getTime()>s.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,s;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,s=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),s?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,s;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const i=12===e.selectionTimeMode,o=i?/^(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!=(s=null==(n=null==(t=e.selectedTime)?void 0:t.match(o))?void 0:n.slice(1))?s:[];a?i&&!r&&(r="AM"):(a=i?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),l=String(e.timeMinMinute),r=i?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:s,time:i,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=i?r.time:e.context.selectedTime,e.selectedDates="only-first"===s&&(null==(l=e.context.selectedDates)?void 0:l[0])?[e.context.selectedDates[0]]:!0===s?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&&s&&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,s=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener("focus",s);const i=t=>{const n="Tab"===t.key&&!t.shiftKey,s=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||s)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const s=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),i=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>s(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:s(e.context.mainElement)?e.context.mainElement:null;!i||i.tabIndex<0||(t.preventDefault(),i.focus())})(t)};return e.context.inputElement.addEventListener("keydown",i),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",s),e.context.inputElement.removeEventListener("keydown",i)}},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 s=0;s<n.length;s++){const i=n[s];"object"!=typeof e[i]||"object"!=typeof t[i]||t[i]instanceof Date||Array.isArray(t[i])?void 0!==t[i]&&(e[i]=t[i]):replaceProperties(e[i],t[i])}},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:s,parentPositions:i}=getAvailablePosition(e,t),o=s.left&&s.right;return(o&&s.bottom?"center":o&&s.top?["top","center"]:Array.isArray(i)?["bottom"===i[0]?"top":"bottom",...i.slice(1)]:i)||n}const setPosition=(e,t,n)=>{if(!e)return;const s="auto"===n?findBestPickerPosition(e,t):n,i={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},o=Array.isArray(s)?s[0]:"bottom",a=Array.isArray(s)?s[1]:s;t.dataset.vcPosition=o;const{top:l,left:r}=getOffset(e),c=l+i[o];let d=r+i[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 s=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener("click",s,{capture:!0}),e.context.cleanupHandlers.push(()=>document.removeEventListener("click",s,{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 s;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!=(s=e.memoizedElements.get(t))?s: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$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",EVENT_CHANGE$2=`change${EVENT_KEY$c}`,EVENT_SHOW$4=`show${EVENT_KEY$c}`,EVENT_SHOWN$3=`shown${EVENT_KEY$c}`,EVENT_HIDE$3=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$c}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$c}.data-api`,SELECTOR_DATA_TOGGLE$6='[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$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).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$2,{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$c}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.body.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.body.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$b}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$b}`,EVENT_CANCEL=`cancel${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}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$3,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){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$b}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$d="navoverflow",DATA_KEY$9="bs.navoverflow",EVENT_KEY$a=`.${DATA_KEY$9}`,EVENT_UPDATE=`update${EVENT_KEY$a}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$a}`,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",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$c={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",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$c={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",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._collapseBelow=0,this._isInitialized=!1,this._init()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}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._collapseBelow=this._resolveCollapseBelow(),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=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_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");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,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$c="swipe",EVENT_KEY$9=".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$b={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$b={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(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._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_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$b="drawer",DATA_KEY$8="bs.drawer",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$8}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$8}`,EVENT_RESIZE=`resize${EVENT_KEY$8}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$8}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$a={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$a={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL$1()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL$1()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}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("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$a="strength",DATA_KEY$7="bs.strength",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$7}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$9={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$9={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$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}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$7}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$9="otpInput",DATA_KEY$6="bs.otpInput",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$6}`,EVENT_INPUT$1=`input${EVENT_KEY$6}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$6}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT$1="input",SYNC_EVENTS=["blur","keyup","click","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$8={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$8={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus();const e=this._input.value.length;this._input.setSelectionRange(e,e),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onFocus=()=>this.focus(),this._onSync=()=>this._render(),EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),this._render(),EventHandler.trigger(this._element,EVENT_INPUT$1,{value:this._input.value}),this._checkComplete()}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$8="chips",DATA_KEY$5="bs.chips",EVENT_KEY$5=".bs.chips",DATA_API_KEY$2=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE$1="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$7={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$7={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),a=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=a;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.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=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...t["*"]||[],...t[n]||[]];for(const t of s)allowedAttribute(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}const NAME$7="TemplateFactory",Default$6={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$6={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$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}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$1(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$6="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),ESCAPE_KEY="Escape",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",EVENT_KEYDOWN$1="keydown",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL$1()?"left":"right",BOTTOM:"bottom",LEFT:isRTL$1()?"right":"left"},Default$5={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$5={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._keydownHandler=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$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}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),this._removeEscapeListener(),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"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),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"),this._setEscapeListener(),"ontouchstart"in document.documentElement)for(const e of 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._removeEscapeListener(),this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of 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:l,middlewareData:r}=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",l),n&&r.arrow){const{x:e,y:t}=r.arrow,s=l.startsWith("top")||l.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)}_setEscapeListener(){this._keydownHandler||(this._keydownHandler=e=>{"Escape"===e.key&&this._isShown()&&this.tip.isConnected&&(e.preventDefault(),e.stopPropagation(),this.hide())},this._element.ownerDocument.addEventListener("keydown",this._keydownHandler,!0))}_removeEscapeListener(){this._keydownHandler&&(this._element.ownerDocument.removeEventListener("keydown",this._keydownHandler,!0),this._keydownHandler=null)}_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);t&&Tooltip.getOrCreateInstance(t)};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$5="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$4={...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$4={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}_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);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};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$4="range",DATA_KEY$4="bs.range",EVENT_KEY$4=".bs.range",DATA_API_KEY$1=".data-api",EVENT_CHANGED="changed.bs.range",EVENT_DOM_CONTENT_LOADED="DOMContentLoaded.bs.range.data-api",EVENT_INPUT="input",EVENT_CHANGE="change",SELECTOR_RANGE=".form-range",SELECTOR_INPUT=".form-range-input",CLASS_NAME_BUBBLE="form-range-bubble",CLASS_NAME_TICKS="form-range-ticks",CLASS_NAME_TICK="form-range-tick",CLASS_NAME_TICK_LABEL="form-range-tick-label",PROPERTY_FILL="--bs-range-fill",Default$3={bubble:!1,formatter:null},DefaultType$3={bubble:"(boolean|null)",formatter:"(function|null)"};class Range extends BaseComponent{constructor(e,t){super(e,t),this._element&&(this._input=SelectorEngine.findOne(SELECTOR_INPUT,this._element),this._input&&(this._bubble=null,this._bubbleText=null,this._ticks=null,this._updateHandler=()=>this._update(),this._config.bubble&&this._createBubble(),this._createTicks(),this._addEventListeners(),this._update()))}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}update(){this._update()}dispose(){EventHandler.off(this._input,"input",this._updateHandler),EventHandler.off(this._input,"change",this._updateHandler),this._bubble?.remove(),this._ticks?.remove(),super.dispose()}_configAfterMerge(e){return null===e.bubble&&(e.bubble=!0),e}_addEventListeners(){EventHandler.on(this._input,"input",this._updateHandler),EventHandler.on(this._input,"change",this._updateHandler)}_min(){return""===this._input.min?0:Number.parseFloat(this._input.min)}_max(){return""===this._input.max?100:Number.parseFloat(this._input.max)}_value(){return Number.parseFloat(this._input.value)}_ratio(){const e=this._max()-this._min();return e>0?(this._value()-this._min())/e:0}_update(){this._element.style.setProperty(PROPERTY_FILL,`${this._ratio()}`),this._bubbleText&&(this._bubbleText.textContent=this._format(this._value())),EventHandler.trigger(this._input,EVENT_CHANGED,{value:this._value()})}_format(e){return"function"==typeof this._config.formatter?this._config.formatter(e):String(e)}_createBubble(){this._bubble=document.createElement("output"),this._bubble.className=`${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`,this._bubble.setAttribute("aria-hidden","true");const e=document.createElement("div");e.className="tooltip-arrow",this._bubbleText=document.createElement("div"),this._bubbleText.className="tooltip-inner",this._bubble.append(e,this._bubbleText),this._input.insertAdjacentElement("afterend",this._bubble)}_createTicks(){const e=this._input.getAttribute("list"),t=e?document.getElementById(e):null;if(!t)return;const n=this._min(),s=this._max()-n||1,i=[];for(const e of SelectorEngine.find("option",t)){const t=Number.parseFloat(e.value);if(!Number.isNaN(t)){const o=Math.min(Math.max((t-n)/s,0),1);i.push({ratio:o,label:e.label})}}if(0===i.length)return;i.sort((e,t)=>e.ratio-t.ratio),this._ticks=document.createElement("div"),this._ticks.className=CLASS_NAME_TICKS,this._ticks.setAttribute("aria-hidden","true");const o=[0,...i.map(e=>e.ratio),1];this._ticks.style.gridTemplateColumns=o.slice(1).map((e,t)=>e-o[t]+"fr").join(" ");for(const[e,t]of i.entries()){const n=document.createElement("span");if(n.className=CLASS_NAME_TICK,n.style.gridColumnStart=`${e+2}`,t.label){const e=document.createElement("span");e.className=CLASS_NAME_TICK_LABEL,e.textContent=t.label,n.append(e)}this._ticks.append(n)}this._element.append(this._ticks)}}EventHandler.on(document,EVENT_DOM_CONTENT_LOADED,()=>{for(const e of SelectorEngine.find(".form-range"))Range.getOrCreateInstance(e)});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"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';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=e.key===HOME_KEY?t[0]:t.at(-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,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,OtpInput,Popover,Range,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
 //# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
index 62fa89eaa03e0d8e75a18cd64d9a9703a7903755..7301dc7cf518bd3f03c7728fdc4840d5aba4dd61 100644 (file)
@@ -1 +1 @@
-{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","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","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","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","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_SETTLE_MAX_FRAMES","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_snapRestoreFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","scrollBy","top","behavior","_restoreSnapWhenSettled","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","_afterScrollSettles","undefined","requestAnimationFrame","startLeft","lastLeft","stableFrames","waited","hasMoved","tick","currentLeft","reachedTarget","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","progress","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","scrollSize","complete","selected","triggerArray","isOpen","round","createCoords","v","x","y","oppositeSideMap","bottom","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","concat","expandPaddingObject","padding","getPaddingObject","rectToClientRect","height","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","MAX_RESET_COUNT","computePosition","middleware","platformWithDetectOverflow","getElementRects","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","nextX","nextY","reset","initialPlacement","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","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","isTableElement","isTopLayer","_e","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","transform","translate","scale","rotate","perspective","isWebKit","backdropFilter","willChange","contain","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","supports","getNodeScroll","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","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","Array","getDocumentRect","html","scrollHeight","clientHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","position","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","clippingAncestors","_c","firstRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","timeoutId","io","cleanup","_io","refresh","skip","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_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","innerWidth","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_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","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","_updateFloatingPosition","referenceElement","_getPlacement","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","offsetValue","_getFallbackPlacements","defaultConfig","_getContainer","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","clientX","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","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","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","datePopup","vcDatePopup","innerHTML","sanitizerHTML","ariaExpanded","ariaLabel","appendChild","createDatePopup","popups","getDate","getDateString","getFullYear","String","getMonth","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","vcWeekNumber","vcWeekYear","createDates","selectedYear","selectedMonth","vcDatesDisabled","setMonth","datesRow","g","layoutDefault","header","labels","navigation","headerContent","wrapper","content","layoutMonths","layoutMultiple","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","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","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","customIconElement","iconClone","iconHtml","outerHTML","cssValue","navWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","Drawer","_swipeHelper","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","setValue","_sanitize","_checkComplete","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","slot","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","remainingChips","focusIndex","targetChip","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","extraClass","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","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","closestDialog","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","arrowX","arrowY","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","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","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","scrollTo","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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 [...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 [...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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// How many frames the scroll-settle watcher waits when no movement is ever\n// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before\n// it gives up and restores snapping anyway.\nconst SCROLL_SETTLE_MAX_FRAMES = 10\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    this._snapRestoreFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,\n    // but it also clamps *programmatic* scrolls to one snap point — which would\n    // break multi-slide jumps from an indicator click, `to()`, or wrapping from\n    // the last slide back to the first. Disable snapping for the duration of the\n    // programmatic scroll, then restore it once the scroll settles so the slide\n    // still rests precisely (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({\n      left,\n      top: 0,\n      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets\n      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would\n      // still animate. `'instant'` forces an immediate, motion-free jump.\n      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'\n    })\n    this._restoreSnapWhenSettled(targetLeft, index)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._viewport.scrollBy({\n      left: this._scrollDelta(clone),\n      top: 0,\n      behavior: 'smooth'\n    })\n\n    this._afterScrollSettles(() => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops\n  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps\n  // to the *nearest* snap point, so if we restored mid-animation the viewport\n  // could jump back to the slide we came from — most visible stepping to the\n  // first/last slide, where it looks like the control \"doesn't work\".\n  _restoreSnapWhenSettled(targetLeft, index) {\n    this._afterScrollSettles(() => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer && index !== undefined) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final ~1px settle landing\n      // exactly on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    }, targetLeft)\n  }\n\n  // Invoke `callback` once the viewport stops moving. We watch the scroll\n  // position across frames instead of relying on the `scrollend` event, which\n  // isn't available across our supported browsers yet.\n  //\n  // Crucially, we only start counting \"stable\" frames once the scroll has\n  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first\n  // frame or two, so naively treating those initial unchanged frames as\n  // \"settled\" would re-enable `mandatory` snapping mid-animation — which cancels\n  // the in-flight programmatic scroll and lands on the wrong slide (most visible\n  // in multi-item layouts). If the scroll never moves (delta clamped at an end,\n  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.\n  //\n  // When `targetLeft` is known we also finish the moment we arrive there, so the\n  // snap is restored exactly on the destination snap point and can't re-snap the\n  // viewport backwards (the failure mode where stepping to the first/last slide\n  // appears to do nothing).\n  _afterScrollSettles(callback, targetLeft) {\n    if (typeof requestAnimationFrame === 'undefined') {\n      callback()\n      return\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    let lastLeft = startLeft\n    let stableFrames = 0\n    let waited = 0\n    let hasMoved = false\n\n    const tick = () => {\n      const currentLeft = this._viewport.scrollLeft\n      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1\n\n      if (Math.abs(currentLeft - startLeft) > 1) {\n        hasMoved = true\n      }\n\n      // Only accrue stable frames after movement begins, so the pre-animation\n      // and ease-in frames don't prematurely count as settled.\n      if (hasMoved) {\n        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0\n      }\n\n      lastLeft = currentLeft\n      waited += 1\n\n      if (reachedTarget || (hasMoved && stableFrames >= 3) || (!hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES)) {\n        this._snapRestoreFrame = null\n        callback()\n        return\n      }\n\n      this._snapRestoreFrame = requestAnimationFrame(tick)\n    }\n\n    this._snapRestoreFrame = requestAnimationFrame(tick)\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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};\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}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? '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.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\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  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\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 * 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// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\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 platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\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 resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\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: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\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 * 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 platform.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 platform.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        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.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 platform.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        platform\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 platform.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 platform.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}\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) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\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 isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\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 (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(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  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\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 (isOffsetParentAnElement) {\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\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 && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || 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 firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: 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) : []), ...(floating ? 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 && floating) {\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    if (floating) {\n      resizeObserver.observe(floating);\n    }\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 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 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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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 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 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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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
+{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","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","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","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","existingInstance","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","scrollSize","complete","selected","triggerArray","isOpen","round","createCoords","v","x","y","oppositeSideMap","bottom","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","concat","expandPaddingObject","padding","getPaddingObject","rectToClientRect","height","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","MAX_RESET_COUNT","computePosition","middleware","platformWithDetectOverflow","getElementRects","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","nextX","nextY","reset","initialPlacement","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","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","isTableElement","isTopLayer","_e","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","transform","translate","scale","rotate","perspective","isWebKit","backdropFilter","willChange","contain","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","supports","getNodeScroll","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","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","Array","getDocumentRect","html","scrollHeight","clientHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","position","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","clippingAncestors","_c","firstRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","timeoutId","io","cleanup","_io","refresh","skip","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_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","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","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","_updateFloatingPosition","wrapper","referenceElement","_getPlacement","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","offsetValue","_getFallbackPlacements","defaultConfig","_getContainer","isConnected","finalPlacement","assign","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","updatePosition","then","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","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","datePopup","vcDatePopup","innerHTML","sanitizerHTML","ariaExpanded","ariaLabel","appendChild","createDatePopup","popups","getDate","getDateString","getFullYear","String","getMonth","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","vcWeekNumber","vcWeekYear","createDates","selectedYear","selectedMonth","vcDatesDisabled","setMonth","datesRow","g","layoutDefault","header","labels","navigation","headerContent","content","layoutMonths","layoutMultiple","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","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","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","customIconElement","iconClone","iconHtml","outerHTML","cssValue","navWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","Drawer","_swipeHelper","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","setValue","_sanitize","_checkComplete","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","slot","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","remainingChips","focusIndex","targetChip","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","extraClass","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","isInTheDom","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","arrowX","arrowY","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","stops","gridTemplateColumns","stop","tick","gridColumnStart","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","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\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(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, 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 [...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 [...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  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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};\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}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? '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.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\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  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\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 * 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// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\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 platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\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 resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\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: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\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 * 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 platform.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 platform.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        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.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 platform.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        platform\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 platform.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 platform.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}\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) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\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 isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\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 (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(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  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\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 (isOffsetParentAnElement) {\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\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 && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || 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 firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: 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) : []), ...(floating ? 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 && floating) {\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    if (floating) {\n      resizeObserver.observe(floating);\n    }\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 // menu wrapper\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    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\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 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    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\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 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    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\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    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\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      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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 ESCAPE_KEY = 'Escape'\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'\nconst EVENT_KEYDOWN = 'keydown'\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._keydownHandler = 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    this._removeEscapeListener()\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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\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 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    this._removeEscapeListener()\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 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  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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 range.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 = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\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._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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 47a9225a434692175227a2f076a183ae2092f929..38a9e5ea9848c4ebb59882617a590993211c2996 100644 (file)
@@ -599,6 +599,13 @@ class BaseComponent extends Config {
     }
     this._element = element;
     this._config = this._getConfig(config);
+
+    // Dispose any existing instance bound to this element before registering the new one,
+    // so its event listeners and timers are cleaned up instead of leaking
+    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY);
+    if (existingInstance) {
+      existingInstance.dispose();
+    }
     Data.set(this._element, this.constructor.DATA_KEY, this);
   }
 
@@ -613,7 +620,13 @@ class BaseComponent extends Config {
 
   // Private
   _queueCallback(callback, element, isAnimated = true) {
-    executeAfterTransition(callback, element, isAnimated);
+    executeAfterTransition(() => {
+      // Don't run the completion callback if the instance was disposed mid-transition
+      if (!this._element) {
+        return;
+      }
+      callback();
+    }, element, isAnimated);
   }
   _getConfig(config) {
     config = this._mergeConfigObj(config, this._element);
@@ -690,6 +703,9 @@ const SelectorEngine = {
     }
     return parents;
   },
+  closest(element, selector) {
+    return Element.prototype.closest.call(element, selector);
+  },
   prev(element, selector) {
     let previous = element.previousElementSibling;
     while (previous) {
@@ -797,11 +813,11 @@ const eventAction = (onEvent, stringSelector, callback) => {
  * Constants
  */
 
-const NAME$k = '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 NAME$l = 'alert';
+const DATA_KEY$h = 'bs.alert';
+const EVENT_KEY$i = `.${DATA_KEY$h}`;
+const EVENT_CLOSE = `close${EVENT_KEY$i}`;
+const EVENT_CLOSED = `closed${EVENT_KEY$i}`;
 const CLASS_NAME_FADE$4 = 'fade';
 const CLASS_NAME_SHOW$6 = 'show';
 
@@ -812,7 +828,7 @@ const CLASS_NAME_SHOW$6 = 'show';
 class Alert extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$k;
+    return NAME$l;
   }
 
   // Public
@@ -852,13 +868,13 @@ enableDismissTrigger(Alert, 'close');
  * Constants
  */
 
-const NAME$j = 'button';
-const DATA_KEY$f = 'bs.button';
-const EVENT_KEY$g = `.${DATA_KEY$f}`;
-const DATA_API_KEY$b = '.data-api';
+const NAME$k = 'button';
+const DATA_KEY$g = 'bs.button';
+const EVENT_KEY$h = `.${DATA_KEY$g}`;
+const DATA_API_KEY$c = '.data-api';
 const CLASS_NAME_ACTIVE$4 = 'active';
 const SELECTOR_DATA_TOGGLE$a = '[data-bs-toggle="button"]';
-const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$g}${DATA_API_KEY$b}`;
+const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$h}${DATA_API_KEY$c}`;
 
 /**
  * Class definition
@@ -867,7 +883,7 @@ const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$g}${DATA_API_KEY$b}`;
 class Button extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$j;
+    return NAME$k;
   }
 
   // Public
@@ -900,22 +916,22 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$8, SELECTOR_DATA_TOGGLE$a, event
  * Constants
  */
 
-const NAME$i = 'carousel';
-const DATA_KEY$e = 'bs.carousel';
-const EVENT_KEY$f = `.${DATA_KEY$e}`;
-const DATA_API_KEY$a = '.data-api';
+const NAME$j = 'carousel';
+const DATA_KEY$f = 'bs.carousel';
+const EVENT_KEY$g = `.${DATA_KEY$f}`;
+const DATA_API_KEY$b = '.data-api';
 const ARROW_LEFT_KEY$2 = 'ArrowLeft';
 const ARROW_RIGHT_KEY$2 = 'ArrowRight';
 const DIRECTION_LEFT = 'left';
 const DIRECTION_RIGHT = 'right';
-const EVENT_SLIDE = `slide${EVENT_KEY$f}`;
-const EVENT_SLID = `slid${EVENT_KEY$f}`;
-const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$f}`;
-const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$f}`;
-const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$f}`;
-const EVENT_POINTERDOWN$1 = `pointerdown${EVENT_KEY$f}`;
-const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$f}${DATA_API_KEY$a}`;
-const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$f}${DATA_API_KEY$a}`;
+const EVENT_SLIDE = `slide${EVENT_KEY$g}`;
+const EVENT_SLID = `slid${EVENT_KEY$g}`;
+const EVENT_KEYDOWN$2 = `keydown${EVENT_KEY$g}`;
+const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$g}`;
+const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$g}`;
+const EVENT_POINTERDOWN$1 = `pointerdown${EVENT_KEY$g}`;
+const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$g}${DATA_API_KEY$b}`;
+const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$g}${DATA_API_KEY$b}`;
 const CLASS_NAME_CAROUSEL = 'carousel';
 const CLASS_NAME_ACTIVE$3 = 'active';
 const CLASS_NAME_FADE$3 = 'carousel-fade';
@@ -932,10 +948,14 @@ const CLASS_NAME_PLAYING = 'carousel-playing';
 // `--carousel-interval` used in the SCSS source becomes this at runtime.
 const PROPERTY_INTERVAL = '--bs-carousel-interval';
 
-// How many frames the scroll-settle watcher waits when no movement is ever
-// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before
-// it gives up and restores snapping anyway.
-const SCROLL_SETTLE_MAX_FRAMES = 10;
+// Duration (ms) of the JS-driven slide animation used for programmatic
+// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`
+// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,
+// because Safari mis-scales programmatic smooth scrolls under page zoom — a
+// one-slide jump sails well past the target (by the zoom factor) and the
+// restored snap then visibly yanks the slide back. Animating by hand is immune
+// to that and gives every jump a consistent duration.
+const SCROLL_DURATION = 300;
 
 // How far below the most-visible slide a slide's IntersectionRatio can be while
 // still counting as the active (left-most) slide. After a programmatic scroll
@@ -962,14 +982,14 @@ const KEY_TO_DIRECTION = {
 const ENDS_STOP = 'stop';
 const ENDS_WRAP = 'wrap';
 const ENDS_LOOP = 'loop';
-const Default$h = {
+const Default$i = {
   autoplay: false,
   ends: ENDS_LOOP,
   interval: 5000,
   keyboard: true,
   pause: 'hover'
 };
-const DefaultType$h = {
+const DefaultType$i = {
   autoplay: 'boolean',
   ends: 'string',
   interval: 'number',
@@ -977,6 +997,10 @@ const DefaultType$h = {
   pause: '(string|boolean)'
 };
 
+// Standard ease-in-out cubic, so the JS-driven scroll accelerates and
+// decelerates like a native smooth scroll rather than moving linearly.
+const easeInOutCubic = progress => progress < 0.5 ? 4 * progress * progress * progress : 1 - (-2 * progress + 2) ** 3 / 2;
+
 /**
  * Class definition
  */
@@ -997,7 +1021,8 @@ class Carousel extends BaseComponent {
     this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element);
     this._interval = null;
     this._observer = null;
-    this._snapRestoreFrame = null;
+    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).
+    this._scrollFrame = null;
     // True while a seamless loop transition is animating, so the
     // IntersectionObserver and re-entrant navigation don't interfere.
     this._looping = false;
@@ -1019,13 +1044,13 @@ class Carousel extends BaseComponent {
 
   // 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
@@ -1107,8 +1132,8 @@ class Carousel extends BaseComponent {
     if (this._observer) {
       this._observer.disconnect();
     }
-    if (this._snapRestoreFrame !== null) {
-      cancelAnimationFrame(this._snapRestoreFrame);
+    if (this._scrollFrame !== null) {
+      cancelAnimationFrame(this._scrollFrame);
     }
 
     // Tidy up any in-flight loop transition: drop a stray clone and restore
@@ -1120,7 +1145,7 @@ class Carousel extends BaseComponent {
 
     // The pointerdown listener lives on the viewport (`.carousel-inner`), which
     // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.
-    EventHandler.off(this._viewport, EVENT_KEY$f);
+    EventHandler.off(this._viewport, EVENT_KEY$g);
     super.dispose();
   }
 
@@ -1129,7 +1154,7 @@ class Carousel extends BaseComponent {
   // disagree about whether the carousel wraps.
   _configAfterMerge(config) {
     if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {
-      config.ends = Default$h.ends;
+      config.ends = Default$i.ends;
     }
     return config;
   }
@@ -1140,7 +1165,7 @@ class Carousel extends BaseComponent {
   }
   _addEventListeners() {
     if (this._config.keyboard) {
-      EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
+      EventHandler.on(this._element, EVENT_KEYDOWN$2, event => this._keydown(event));
     }
     if (this._config.pause === 'hover') {
       EventHandler.on(this._element, EVENT_MOUSEENTER$2, () => this.pause());
@@ -1243,23 +1268,80 @@ class Carousel extends BaseComponent {
       return;
     }
 
-    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,
-    // but it also clamps *programmatic* scrolls to one snap point — which would
-    // break multi-slide jumps from an indicator click, `to()`, or wrapping from
-    // the last slide back to the first. Disable snapping for the duration of the
-    // programmatic scroll, then restore it once the scroll settles so the slide
-    // still rests precisely (honouring peek/gap).
+    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single
+    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or
+    // wrapping from the last slide back to the first). Suspend snapping while we
+    // animate, then restore it once we arrive so the slide rests precisely on the
+    // snap point (honouring peek/gap).
     const targetLeft = this._viewport.scrollLeft + left;
     this._viewport.style.scrollSnapType = 'none';
-    this._viewport.scrollBy({
-      left,
-      top: 0,
-      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets
-      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would
-      // still animate. `'instant'` forces an immediate, motion-free jump.
-      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'
+    this._animateScroll(targetLeft, () => {
+      this._viewport.style.scrollSnapType = '';
+      // Without IntersectionObserver nothing else fires `slid`/updates the active
+      // slide after a programmatic scroll, so do it here. With the observer
+      // present this is a no-op (it already moved the active index to `index`).
+      if (!this._observer) {
+        this._setActive(index);
+      }
+
+      // The IntersectionObserver doesn't fire once the viewport has stopped, so
+      // refresh the end controls here to catch the final settle landing exactly
+      // on the scroll extent (e.g. disabling `next` at the last view).
+      this._updateEndControls();
     });
-    this._restoreSnapWhenSettled(targetLeft, index);
+  }
+
+  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,
+  // stepping the position ourselves each frame (the caller suspends snapping
+  // first and restores it in `onComplete`). This replaces
+  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic
+  // jumps overshoot the target and snap back. Because we set every frame's
+  // absolute position with an instant scroll, the animation can't overshoot and
+  // every jump takes the same time, in every browser.
+  _animateScroll(targetLeft, onComplete) {
+    if (this._scrollFrame !== null) {
+      cancelAnimationFrame(this._scrollFrame);
+      this._scrollFrame = null;
+    }
+    const startLeft = this._viewport.scrollLeft;
+    const distance = targetLeft - startLeft;
+
+    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.
+    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {
+      this._viewport.scrollTo({
+        left: targetLeft,
+        behavior: 'instant'
+      });
+      onComplete();
+      return;
+    }
+    let startTime = null;
+    const step = now => {
+      if (startTime === null) {
+        startTime = now;
+      }
+      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1);
+      // `'instant'` (not the default) because the viewport sets
+      // `scroll-behavior: smooth` in CSS; without it each step would itself
+      // animate and fight this loop.
+      this._viewport.scrollTo({
+        left: startLeft + distance * easeInOutCubic(progress),
+        behavior: 'instant'
+      });
+      if (progress < 1) {
+        this._scrollFrame = requestAnimationFrame(step);
+        return;
+      }
+
+      // Land exactly on target, guarding against floating-point drift.
+      this._viewport.scrollTo({
+        left: targetLeft,
+        behavior: 'instant'
+      });
+      this._scrollFrame = null;
+      onComplete();
+    };
+    this._scrollFrame = requestAnimationFrame(step);
   }
 
   // Horizontal distance to scroll the viewport so `element` rests where the
@@ -1321,12 +1403,7 @@ class Carousel extends BaseComponent {
       // current slide so the insertion doesn't flash before we animate.
       this._jumpScroll(this._scrollDelta(items[fromIndex]));
     }
-    this._viewport.scrollBy({
-      left: this._scrollDelta(clone),
-      top: 0,
-      behavior: 'smooth'
-    });
-    this._afterScrollSettles(() => {
+    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {
       // Teleport to the real destination without animation. JS runs to
       // completion before the browser paints, so removing the clone and the
       // compensating scroll land in a single frame (no visible flash).
@@ -1364,81 +1441,6 @@ class Carousel extends BaseComponent {
     });
   }
 
-  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops
-  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps
-  // to the *nearest* snap point, so if we restored mid-animation the viewport
-  // could jump back to the slide we came from — most visible stepping to the
-  // first/last slide, where it looks like the control "doesn't work".
-  _restoreSnapWhenSettled(targetLeft, index) {
-    this._afterScrollSettles(() => {
-      this._viewport.style.scrollSnapType = '';
-      // Without IntersectionObserver nothing else fires `slid`/updates the active
-      // slide after a programmatic scroll, so do it here. With the observer
-      // present this is a no-op (it already moved the active index to `index`).
-      if (!this._observer && index !== undefined) {
-        this._setActive(index);
-      }
-
-      // The IntersectionObserver doesn't fire once the viewport has stopped, so
-      // refresh the end controls here to catch the final ~1px settle landing
-      // exactly on the scroll extent (e.g. disabling `next` at the last view).
-      this._updateEndControls();
-    }, targetLeft);
-  }
-
-  // Invoke `callback` once the viewport stops moving. We watch the scroll
-  // position across frames instead of relying on the `scrollend` event, which
-  // isn't available across our supported browsers yet.
-  //
-  // Crucially, we only start counting "stable" frames once the scroll has
-  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first
-  // frame or two, so naively treating those initial unchanged frames as
-  // "settled" would re-enable `mandatory` snapping mid-animation — which cancels
-  // the in-flight programmatic scroll and lands on the wrong slide (most visible
-  // in multi-item layouts). If the scroll never moves (delta clamped at an end,
-  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.
-  //
-  // When `targetLeft` is known we also finish the moment we arrive there, so the
-  // snap is restored exactly on the destination snap point and can't re-snap the
-  // viewport backwards (the failure mode where stepping to the first/last slide
-  // appears to do nothing).
-  _afterScrollSettles(callback, targetLeft) {
-    if (typeof requestAnimationFrame === 'undefined') {
-      callback();
-      return;
-    }
-    if (this._snapRestoreFrame !== null) {
-      cancelAnimationFrame(this._snapRestoreFrame);
-    }
-    const startLeft = this._viewport.scrollLeft;
-    let lastLeft = startLeft;
-    let stableFrames = 0;
-    let waited = 0;
-    let hasMoved = false;
-    const tick = () => {
-      const currentLeft = this._viewport.scrollLeft;
-      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1;
-      if (Math.abs(currentLeft - startLeft) > 1) {
-        hasMoved = true;
-      }
-
-      // Only accrue stable frames after movement begins, so the pre-animation
-      // and ease-in frames don't prematurely count as settled.
-      if (hasMoved) {
-        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0;
-      }
-      lastLeft = currentLeft;
-      waited += 1;
-      if (reachedTarget || hasMoved && stableFrames >= 3 || !hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES) {
-        this._snapRestoreFrame = null;
-        callback();
-        return;
-      }
-      this._snapRestoreFrame = requestAnimationFrame(tick);
-    };
-    this._snapRestoreFrame = requestAnimationFrame(tick);
-  }
-
   // Fade mode just swaps the active class; the CSS opacity transition on
   // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and
   // collapses to an instant swap under reduced motion, via the `transition`
@@ -1706,15 +1708,15 @@ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
  * Constants
  */
 
-const NAME$h = 'collapse';
-const DATA_KEY$d = 'bs.collapse';
-const EVENT_KEY$e = `.${DATA_KEY$d}`;
-const DATA_API_KEY$9 = '.data-api';
-const EVENT_SHOW$7 = `show${EVENT_KEY$e}`;
-const EVENT_SHOWN$6 = `shown${EVENT_KEY$e}`;
-const EVENT_HIDE$6 = `hide${EVENT_KEY$e}`;
-const EVENT_HIDDEN$8 = `hidden${EVENT_KEY$e}`;
-const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const NAME$i = 'collapse';
+const DATA_KEY$e = 'bs.collapse';
+const EVENT_KEY$f = `.${DATA_KEY$e}`;
+const DATA_API_KEY$a = '.data-api';
+const EVENT_SHOW$7 = `show${EVENT_KEY$f}`;
+const EVENT_SHOWN$6 = `shown${EVENT_KEY$f}`;
+const EVENT_HIDE$6 = `hide${EVENT_KEY$f}`;
+const EVENT_HIDDEN$8 = `hidden${EVENT_KEY$f}`;
+const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$f}${DATA_API_KEY$a}`;
 const CLASS_NAME_SHOW$5 = 'show';
 const CLASS_NAME_COLLAPSE = 'collapse';
 const CLASS_NAME_COLLAPSING = 'collapsing';
@@ -1725,11 +1727,11 @@ const WIDTH = 'width';
 const HEIGHT = 'height';
 const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
 const SELECTOR_DATA_TOGGLE$9 = '[data-bs-toggle="collapse"]';
-const Default$g = {
+const Default$h = {
   parent: null,
   toggle: true
 };
-const DefaultType$g = {
+const DefaultType$h = {
   parent: '(null|element)',
   toggle: 'boolean'
 };
@@ -1762,13 +1764,13 @@ class Collapse 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
@@ -2034,11 +2036,11 @@ const disposeBreakpointListeners = listeners => {
  * Constants
  */
 
-const NAME$g = 'menu';
-const DATA_KEY$c = 'bs.menu';
-const EVENT_KEY$d = `.${DATA_KEY$c}`;
-const DATA_API_KEY$8 = '.data-api';
-const ESCAPE_KEY$1 = 'Escape';
+const NAME$h = 'menu';
+const DATA_KEY$d = 'bs.menu';
+const EVENT_KEY$e = `.${DATA_KEY$d}`;
+const DATA_API_KEY$9 = '.data-api';
+const ESCAPE_KEY$2 = 'Escape';
 const TAB_KEY$1 = 'Tab';
 const ARROW_UP_KEY$2 = 'ArrowUp';
 const ARROW_DOWN_KEY$2 = 'ArrowDown';
@@ -2050,13 +2052,13 @@ const ENTER_KEY$1 = 'Enter';
 const SPACE_KEY$1 = ' ';
 const RIGHT_MOUSE_BUTTON = 2;
 const SUBMENU_CLOSE_DELAY = 100;
-const EVENT_HIDE$5 = `hide${EVENT_KEY$d}`;
-const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$d}`;
-const EVENT_SHOW$6 = `show${EVENT_KEY$d}`;
-const EVENT_SHOWN$5 = `shown${EVENT_KEY$d}`;
-const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
-const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$d}${DATA_API_KEY$8}`;
-const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$d}${DATA_API_KEY$8}`;
+const EVENT_HIDE$5 = `hide${EVENT_KEY$e}`;
+const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$e}`;
+const EVENT_SHOW$6 = `show${EVENT_KEY$e}`;
+const EVENT_SHOWN$5 = `shown${EVENT_KEY$e}`;
+const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$e}${DATA_API_KEY$9}`;
 const CLASS_NAME_SHOW$4 = 'show';
 const SELECTOR_DATA_TOGGLE$8 = '[data-bs-toggle="menu"]:not(.disabled):not(:disabled)';
 const SELECTOR_MENU$2 = '.menu';
@@ -2073,7 +2075,7 @@ const resolveLogicalPlacement = placement => {
   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 = {
+const Default$g = {
   autoClose: true,
   boundary: 'clippingParents',
   container: false,
@@ -2087,7 +2089,7 @@ const Default$f = {
   submenuTrigger: 'both',
   submenuDelay: SUBMENU_CLOSE_DELAY
 };
-const DefaultType$f = {
+const DefaultType$g = {
   autoClose: '(boolean|string)',
   boundary: '(string|element)',
   container: '(string|element|boolean)',
@@ -2116,12 +2118,20 @@ class Menu extends BaseComponent {
     this._floatingCleanup = null;
     this._mediaQueryListeners = [];
     this._responsivePlacements = null;
-    this._parent = this._element.parentNode;
-    this._isSubmenu = this._parent.classList?.contains('submenu');
+    this._parent = this._element.parentNode; // menu wrapper
     this._openSubmenus = new Map();
     this._submenuCloseTimeouts = new Map();
     this._hoverIntentData = null;
     this._menu = this._config.menu || this._findMenu();
+
+    // When the menu was discovered from the DOM, refine the wrapper to the closest
+    // ancestor that actually contains it, so the toggle doesn't have to be a direct
+    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still
+    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.
+    if (!this._config.menu && this._menu) {
+      this._parent = this._findWrapper(this._menu);
+    }
+    this._isSubmenu = this._parent.classList?.contains('submenu');
     this._menuOriginalParent = this._menu?.parentNode;
     this._parseResponsivePlacements();
     this._setupSubmenuListeners();
@@ -2129,13 +2139,13 @@ class Menu 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
@@ -2198,7 +2208,17 @@ class Menu extends BaseComponent {
 
   // 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);
+    // Fall back to the closest ancestor that contains a menu so the toggle can be
+    // nested deeper than a direct sibling of `.menu`.
+    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU$2})`);
+    return SelectorEngine.next(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.findOne(SELECTOR_MENU$2, wrapper || this._parent);
+  }
+  _findWrapper(menu) {
+    let wrapper = this._element.parentNode;
+    while (wrapper instanceof Element && !wrapper.contains(menu)) {
+      wrapper = wrapper.parentNode;
+    }
+    return wrapper instanceof Element ? wrapper : this._element.parentNode;
   }
   _completeHide(relatedTarget) {
     const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
@@ -2227,7 +2247,7 @@ class Menu extends BaseComponent {
   _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.`);
+      throw new TypeError(`${NAME$h.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
     }
     return config;
   }
@@ -2485,6 +2505,12 @@ class Menu extends BaseComponent {
     }
     trigger.setAttribute('aria-expanded', 'true');
     trigger.setAttribute('aria-haspopup', 'true');
+
+    // Keep the submenu transparent until Floating UI applies the first position, so
+    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)
+    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps
+    // the submenu measurable for flip/shift and focusable for keyboard navigation.
+    submenu.style.opacity = '0';
     submenu.classList.add(CLASS_NAME_SHOW$4);
     submenuWrapper.classList.add(CLASS_NAME_SHOW$4);
     const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
@@ -2514,10 +2540,13 @@ class Menu extends BaseComponent {
     }
     submenu.classList.remove(CLASS_NAME_SHOW$4);
     submenuWrapper.classList.remove(CLASS_NAME_SHOW$4);
-    submenu.style.position = '';
-    submenu.style.left = '';
-    submenu.style.top = '';
-    submenu.style.margin = '';
+
+    // Keep the Floating UI position styles in place while the submenu fades out.
+    // Clearing them here would let the submenu snap back to its CSS fallback
+    // (`top: 0`, over the parent menu) for the duration of the close transition,
+    // causing it to flash over the parent. They get recomputed on the next open
+    // (and the opacity gate in `_openSubmenu` hides any stale position until then).
+    submenu.style.opacity = '';
   }
   _closeAllSubmenus() {
     for (const [submenu] of this._openSubmenus) {
@@ -2546,7 +2575,12 @@ class Menu extends BaseComponent {
     }), shift({
       padding: 8
     })];
-    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
+    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware).then(finalPlacement => {
+      // Reveal the submenu now that it has been positioned (see `_openSubmenu`);
+      // clearing the inline opacity lets the CSS fade-in transition take over.
+      submenu.style.opacity = '';
+      return finalPlacement;
+    });
     updatePosition();
     return autoUpdate(referenceElement, submenu, updatePosition);
   }
@@ -2728,7 +2762,7 @@ class Menu extends BaseComponent {
   }
   static dataApiKeydownHandler(event) {
     const isInput = /input|textarea/i.test(event.target.tagName);
-    const isEscapeEvent = event.key === ESCAPE_KEY$1;
+    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);
@@ -2799,11 +2833,11 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, functi
  * Constants
  */
 
-const NAME$f = 'combobox';
-const DATA_KEY$b = 'bs.combobox';
-const EVENT_KEY$c = `.${DATA_KEY$b}`;
-const DATA_API_KEY$7 = '.data-api';
-const ESCAPE_KEY = 'Escape';
+const NAME$g = 'combobox';
+const DATA_KEY$c = 'bs.combobox';
+const EVENT_KEY$d = `.${DATA_KEY$c}`;
+const DATA_API_KEY$8 = '.data-api';
+const ESCAPE_KEY$1 = 'Escape';
 const TAB_KEY = 'Tab';
 const ARROW_UP_KEY$1 = 'ArrowUp';
 const ARROW_DOWN_KEY$1 = 'ArrowDown';
@@ -2811,12 +2845,12 @@ const HOME_KEY$1 = 'Home';
 const END_KEY$1 = 'End';
 const ENTER_KEY = 'Enter';
 const SPACE_KEY = ' ';
-const EVENT_CHANGE$2 = `change${EVENT_KEY$c}`;
-const EVENT_SHOW$5 = `show${EVENT_KEY$c}`;
-const EVENT_SHOWN$4 = `shown${EVENT_KEY$c}`;
-const EVENT_HIDE$4 = `hide${EVENT_KEY$c}`;
-const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$c}`;
-const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_CHANGE$3 = `change${EVENT_KEY$d}`;
+const EVENT_SHOW$5 = `show${EVENT_KEY$d}`;
+const EVENT_SHOWN$4 = `shown${EVENT_KEY$d}`;
+const EVENT_HIDE$4 = `hide${EVENT_KEY$d}`;
+const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$d}`;
+const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
 const CLASS_NAME_SHOW$3 = 'show';
 const CLASS_NAME_SELECTED = 'selected';
 const CLASS_NAME_PLACEHOLDER = 'combobox-placeholder';
@@ -2827,7 +2861,7 @@ const SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:di
 const SELECTOR_VALUE = '.combobox-value';
 const SELECTOR_SEARCH_INPUT = '.combobox-search-input';
 const SELECTOR_NO_RESULTS = '.combobox-no-results';
-const Default$e = {
+const Default$f = {
   boundary: 'clippingParents',
   multiple: false,
   name: null,
@@ -2837,7 +2871,7 @@ const Default$e = {
   search: false,
   searchNormalize: false
 };
-const DefaultType$e = {
+const DefaultType$f = {
   boundary: '(string|element)',
   multiple: 'boolean',
   name: '(string|null)',
@@ -2870,13 +2904,13 @@ class Combobox extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$e;
+    return Default$f;
   }
   static get DefaultType() {
-    return DefaultType$e;
+    return DefaultType$f;
   }
   static get NAME() {
-    return NAME$f;
+    return NAME$g;
   }
 
   // Public
@@ -2919,8 +2953,8 @@ class Combobox extends BaseComponent {
       this._hiddenInput.remove();
       this._hiddenInput = null;
     }
-    EventHandler.off(this._menu, EVENT_KEY$c);
-    EventHandler.off(this._toggle, EVENT_KEY$c);
+    EventHandler.off(this._menu, EVENT_KEY$d);
+    EventHandler.off(this._toggle, EVENT_KEY$d);
     super.dispose();
   }
 
@@ -2987,7 +3021,7 @@ class Combobox extends BaseComponent {
             items[0].focus();
           }
         }
-        if (event.key === ESCAPE_KEY) {
+        if (event.key === ESCAPE_KEY$1) {
           this.hide();
           this._toggle.focus();
         }
@@ -3010,7 +3044,7 @@ class Combobox extends BaseComponent {
     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$2, {
+    EventHandler.trigger(this._toggle, EVENT_CHANGE$3, {
       value,
       item
     });
@@ -3105,7 +3139,7 @@ class Combobox extends BaseComponent {
       key,
       target
     } = event;
-    if (key === ESCAPE_KEY) {
+    if (key === ESCAPE_KEY$1) {
       event.preventDefault();
       event.stopPropagation();
       this.hide();
@@ -3184,21 +3218,21 @@ EventHandler.on(document, 'DOMContentLoaded', () => {
  * Constants
  */
 
-const NAME$e = 'datepicker';
-const DATA_KEY$a = 'bs.datepicker';
-const EVENT_KEY$b = `.${DATA_KEY$a}`;
-const DATA_API_KEY$6 = '.data-api';
-const EVENT_CHANGE$1 = `change${EVENT_KEY$b}`;
-const EVENT_SHOW$4 = `show${EVENT_KEY$b}`;
-const EVENT_SHOWN$3 = `shown${EVENT_KEY$b}`;
-const EVENT_HIDE$3 = `hide${EVENT_KEY$b}`;
-const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$b}`;
-const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
-const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$b}${DATA_API_KEY$6}`;
+const NAME$f = 'datepicker';
+const DATA_KEY$b = 'bs.datepicker';
+const EVENT_KEY$c = `.${DATA_KEY$b}`;
+const DATA_API_KEY$7 = '.data-api';
+const EVENT_CHANGE$2 = `change${EVENT_KEY$c}`;
+const EVENT_SHOW$4 = `show${EVENT_KEY$c}`;
+const EVENT_SHOWN$3 = `shown${EVENT_KEY$c}`;
+const EVENT_HIDE$3 = `hide${EVENT_KEY$c}`;
+const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$c}`;
+const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$c}${DATA_API_KEY$7}`;
 const SELECTOR_DATA_TOGGLE$6 = '[data-bs-toggle="datepicker"]';
 const HIDE_DELAY = 100; // ms delay before hiding after selection
 
-const Default$d = {
+const Default$e = {
   datepickerTheme: null,
   // 'light', 'dark', 'auto' - explicit theme for datepicker popover only
   dateMin: null,
@@ -3223,7 +3257,7 @@ const Default$d = {
   // 'left', 'center', 'right', 'auto'
   vcpOptions: {} // Pass-through for any VCP option
 };
-const DefaultType$d = {
+const DefaultType$e = {
   datepickerTheme: '(null|string)',
   dateMin: '(null|string|number|object)',
   dateMax: '(null|string|number|object)',
@@ -3254,13 +3288,13 @@ class Datepicker extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$d;
+    return Default$e;
   }
   static get DefaultType() {
-    return DefaultType$d;
+    return DefaultType$e;
   }
   static get NAME() {
-    return NAME$e;
+    return NAME$f;
   }
 
   // Public
@@ -3502,7 +3536,7 @@ class Datepicker extends BaseComponent {
         this._displayElement.textContent = formattedDate;
       }
     }
-    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$2, {
       dates: selectedDates,
       event
     });
@@ -3594,7 +3628,7 @@ EventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE$6, functi
 });
 
 // Auto-initialize inline datepickers on DOMContentLoaded
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$b}${DATA_API_KEY$6}`, () => {
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$c}${DATA_API_KEY$7}`, () => {
   for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`)) {
     Datepicker.getOrCreateInstance(element);
   }
@@ -3865,24 +3899,24 @@ class DialogBase extends BaseComponent {
  * Constants
  */
 
-const NAME$d = 'dialog';
-const DATA_KEY$9 = 'bs.dialog';
-const EVENT_KEY$a = `.${DATA_KEY$9}`;
-const DATA_API_KEY$5 = '.data-api';
-const EVENT_SHOW$3 = `show${EVENT_KEY$a}`;
-const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$a}`;
-const EVENT_CANCEL = `cancel${EVENT_KEY$a}`;
-const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$a}${DATA_API_KEY$5}`;
+const NAME$e = 'dialog';
+const DATA_KEY$a = 'bs.dialog';
+const EVENT_KEY$b = `.${DATA_KEY$a}`;
+const DATA_API_KEY$6 = '.data-api';
+const EVENT_SHOW$3 = `show${EVENT_KEY$b}`;
+const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$b}`;
+const EVENT_CANCEL = `cancel${EVENT_KEY$b}`;
+const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
 const CLASS_NAME_NONMODAL = 'dialog-nonmodal';
 const CLASS_NAME_INSTANT = 'dialog-instant';
 const CLASS_NAME_SWAP_IN = 'dialog-swap-in';
 const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="dialog"]';
-const Default$c = {
+const Default$d = {
   backdrop: true,
   keyboard: true,
   modal: true
 };
-const DefaultType$c = {
+const DefaultType$d = {
   backdrop: '(boolean|string)',
   keyboard: 'boolean',
   modal: 'boolean'
@@ -3895,13 +3929,13 @@ const DefaultType$c = {
 class Dialog extends DialogBase {
   // Getters
   static get Default() {
-    return Default$c;
+    return Default$d;
   }
   static get DefaultType() {
-    return DefaultType$c;
+    return DefaultType$d;
   }
   static get NAME() {
-    return NAME$d;
+    return NAME$e;
   }
 
   // Public
@@ -3984,7 +4018,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$5, functi
     const newDialog = Dialog.getOrCreateInstance(target, config);
     target.classList.add(CLASS_NAME_SWAP_IN);
     newDialog.show(this);
-    EventHandler.one(target, `shown${EVENT_KEY$a}`, () => {
+    EventHandler.one(target, `shown${EVENT_KEY$b}`, () => {
       target.classList.remove(CLASS_NAME_SWAP_IN);
     });
     const currentInstance = Dialog.getInstance(currentDialog);
@@ -4018,11 +4052,11 @@ enableDismissTrigger(Dialog);
  * Constants
  */
 
-const NAME$c = 'navoverflow';
-const DATA_KEY$8 = 'bs.navoverflow';
-const EVENT_KEY$9 = `.${DATA_KEY$8}`;
-const EVENT_UPDATE = `update${EVENT_KEY$9}`;
-const EVENT_OVERFLOW = `overflow${EVENT_KEY$9}`;
+const NAME$d = 'navoverflow';
+const DATA_KEY$9 = 'bs.navoverflow';
+const EVENT_KEY$a = `.${DATA_KEY$9}`;
+const EVENT_UPDATE = `update${EVENT_KEY$a}`;
+const EVENT_OVERFLOW = `overflow${EVENT_KEY$a}`;
 const CLASS_NAME_OVERFLOW = 'nav-overflow';
 const CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu';
 const CLASS_NAME_HIDDEN = 'd-none';
@@ -4032,7 +4066,7 @@ const SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle';
 const SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu';
 const SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]';
 const CLASS_NAME_KEEP = 'nav-overflow-keep';
-const Default$b = {
+const Default$c = {
   collapseBelow: 0,
   iconPlacement: 'start',
   menuPlacement: 'bottom-end',
@@ -4040,7 +4074,7 @@ const Default$b = {
   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 // Minimum items to keep visible before showing overflow
 };
-const DefaultType$b = {
+const DefaultType$c = {
   collapseBelow: '(number|string)',
   iconPlacement: 'string',
   menuPlacement: 'string',
@@ -4068,13 +4102,13 @@ class NavOverflow extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$b;
+    return Default$c;
   }
   static get DefaultType() {
-    return DefaultType$b;
+    return DefaultType$c;
   }
   static get NAME() {
-    return NAME$c;
+    return NAME$d;
   }
 
   // Public
@@ -4317,25 +4351,25 @@ EventHandler.on(document, 'DOMContentLoaded', () => {
  * Constants
  */
 
-const NAME$b = 'swipe';
-const EVENT_KEY$8 = '.bs.swipe';
-const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$8}`;
-const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$8}`;
-const EVENT_TOUCHEND = `touchend${EVENT_KEY$8}`;
-const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$8}`;
-const EVENT_POINTERUP = `pointerup${EVENT_KEY$8}`;
+const NAME$c = 'swipe';
+const EVENT_KEY$9 = '.bs.swipe';
+const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
+const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
+const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
+const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
+const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
 const POINTER_TYPE_TOUCH = 'touch';
 const POINTER_TYPE_PEN = 'pen';
 const CLASS_NAME_POINTER_EVENT = 'pointer-event';
 const SWIPE_THRESHOLD = 40;
-const Default$a = {
+const Default$b = {
   endCallback: null,
   leftCallback: null,
   rightCallback: null,
   upCallback: null,
   downCallback: null
 };
-const DefaultType$a = {
+const DefaultType$b = {
   endCallback: '(function|null)',
   leftCallback: '(function|null)',
   rightCallback: '(function|null)',
@@ -4363,18 +4397,18 @@ class Swipe extends Config {
 
   // Getters
   static get Default() {
-    return Default$a;
+    return Default$b;
   }
   static get DefaultType() {
-    return DefaultType$a;
+    return DefaultType$b;
   }
   static get NAME() {
-    return NAME$b;
+    return NAME$c;
   }
 
   // Public
   dispose() {
-    EventHandler.off(this._element, EVENT_KEY$8);
+    EventHandler.off(this._element, EVENT_KEY$9);
   }
 
   // Private
@@ -4466,21 +4500,21 @@ class Swipe extends Config {
  * Constants
  */
 
-const NAME$a = 'drawer';
-const DATA_KEY$7 = 'bs.drawer';
-const EVENT_KEY$7 = `.${DATA_KEY$7}`;
-const DATA_API_KEY$4 = '.data-api';
-const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$7}${DATA_API_KEY$4}`;
-const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$7}`;
-const EVENT_RESIZE = `resize${EVENT_KEY$7}`;
-const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
+const NAME$b = 'drawer';
+const DATA_KEY$8 = 'bs.drawer';
+const EVENT_KEY$8 = `.${DATA_KEY$8}`;
+const DATA_API_KEY$5 = '.data-api';
+const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
+const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$8}`;
+const EVENT_RESIZE = `resize${EVENT_KEY$8}`;
+const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
 const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="drawer"]';
-const Default$9 = {
+const Default$a = {
   backdrop: true,
   keyboard: true,
   scroll: false
 };
-const DefaultType$9 = {
+const DefaultType$a = {
   backdrop: '(boolean|string)',
   keyboard: 'boolean',
   scroll: 'boolean'
@@ -4498,13 +4532,13 @@ class Drawer extends DialogBase {
 
   // Getters
   static get Default() {
-    return Default$9;
+    return Default$a;
   }
   static get DefaultType() {
-    return DefaultType$9;
+    return DefaultType$a;
   }
   static get NAME() {
-    return NAME$a;
+    return NAME$b;
   }
 
   // Public
@@ -4618,14 +4652,14 @@ enableDismissTrigger(Drawer);
  * Constants
  */
 
-const NAME$9 = 'strength';
-const DATA_KEY$6 = 'bs.strength';
-const EVENT_KEY$6 = `.${DATA_KEY$6}`;
-const DATA_API_KEY$3 = '.data-api';
-const EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY$6}`;
+const NAME$a = 'strength';
+const DATA_KEY$7 = 'bs.strength';
+const EVENT_KEY$7 = `.${DATA_KEY$7}`;
+const DATA_API_KEY$4 = '.data-api';
+const EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY$7}`;
 const SELECTOR_DATA_STRENGTH = '[data-bs-strength]';
 const STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong'];
-const Default$8 = {
+const Default$9 = {
   input: null,
   // Selector or element for password input
   minLength: 8,
@@ -4649,7 +4683,7 @@ const Default$8 = {
   // weak ≤2, fair ≤4, good ≤6, strong >6
   scorer: null // Custom scoring function (password) => number
 };
-const DefaultType$8 = {
+const DefaultType$9 = {
   input: '(string|element|null)',
   minLength: 'number',
   messages: 'object',
@@ -4678,13 +4712,13 @@ class Strength extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$8;
+    return Default$9;
   }
   static get DefaultType() {
-    return DefaultType$8;
+    return DefaultType$9;
   }
   static get NAME() {
-    return NAME$9;
+    return NAME$a;
   }
 
   // Public
@@ -4830,7 +4864,7 @@ class Strength extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$6}${DATA_API_KEY$3}`, () => {
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$7}${DATA_API_KEY$4}`, () => {
   for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {
     Strength.getOrCreateInstance(element);
   }
@@ -4848,15 +4882,15 @@ EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$6}${DATA_API_KEY$3}`, ()
  * Constants
  */
 
-const NAME$8 = 'otpInput';
-const DATA_KEY$5 = 'bs.otpInput';
-const EVENT_KEY$5 = `.${DATA_KEY$5}`;
-const DATA_API_KEY$2 = '.data-api';
-const EVENT_COMPLETE = `complete${EVENT_KEY$5}`;
-const EVENT_INPUT = `input${EVENT_KEY$5}`;
-const EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY$5}${DATA_API_KEY$2}`;
+const NAME$9 = 'otpInput';
+const DATA_KEY$6 = 'bs.otpInput';
+const EVENT_KEY$6 = `.${DATA_KEY$6}`;
+const DATA_API_KEY$3 = '.data-api';
+const EVENT_COMPLETE = `complete${EVENT_KEY$6}`;
+const EVENT_INPUT$1 = `input${EVENT_KEY$6}`;
+const EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY$6}${DATA_API_KEY$3}`;
 const SELECTOR_DATA_OTP = '[data-bs-otp]';
-const SELECTOR_INPUT = 'input';
+const SELECTOR_INPUT$1 = 'input';
 
 // Events that should refresh the active-slot highlight as the caret moves
 const SYNC_EVENTS = ['blur', 'keyup', 'click', 'select'];
@@ -4887,14 +4921,14 @@ const TYPES = {
     filter: /[^A-Za-z]/g
   }
 };
-const Default$7 = {
+const Default$8 = {
   groups: null,
   length: null,
   mask: false,
   separator: '·',
   type: 'numeric'
 };
-const DefaultType$7 = {
+const DefaultType$8 = {
   groups: '(array|null)',
   length: '(number|null)',
   mask: 'boolean',
@@ -4909,7 +4943,7 @@ const DefaultType$7 = {
 class OtpInput extends BaseComponent {
   constructor(element, config) {
     super(element, config);
-    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element);
+    this._input = SelectorEngine.findOne(SELECTOR_INPUT$1, this._element);
     if (!this._input) {
       return;
     }
@@ -4924,13 +4958,13 @@ class OtpInput extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$7;
+    return Default$8;
   }
   static get DefaultType() {
-    return DefaultType$7;
+    return DefaultType$8;
   }
   static get NAME() {
-    return NAME$8;
+    return NAME$9;
   }
 
   // Public
@@ -5047,7 +5081,7 @@ class OtpInput extends BaseComponent {
       this._input.value = sanitized;
     }
     this._render();
-    EventHandler.trigger(this._element, EVENT_INPUT, {
+    EventHandler.trigger(this._element, EVENT_INPUT$1, {
       value: this._input.value
     });
     this._checkComplete();
@@ -5103,14 +5137,14 @@ EventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {
  * Constants
  */
 
-const NAME$7 = 'chips';
-const DATA_KEY$4 = 'bs.chips';
-const EVENT_KEY$4 = `.${DATA_KEY$4}`;
-const DATA_API_KEY$1 = '.data-api';
-const EVENT_ADD = `add${EVENT_KEY$4}`;
-const EVENT_REMOVE = `remove${EVENT_KEY$4}`;
-const EVENT_CHANGE = `change${EVENT_KEY$4}`;
-const EVENT_SELECT = `select${EVENT_KEY$4}`;
+const NAME$8 = 'chips';
+const DATA_KEY$5 = 'bs.chips';
+const EVENT_KEY$5 = `.${DATA_KEY$5}`;
+const DATA_API_KEY$2 = '.data-api';
+const EVENT_ADD = `add${EVENT_KEY$5}`;
+const EVENT_REMOVE = `remove${EVENT_KEY$5}`;
+const EVENT_CHANGE$1 = `change${EVENT_KEY$5}`;
+const EVENT_SELECT = `select${EVENT_KEY$5}`;
 const SELECTOR_DATA_CHIPS = '[data-bs-chips]';
 const SELECTOR_GHOST_INPUT = '.form-ghost';
 const SELECTOR_CHIP = '.chip';
@@ -5119,7 +5153,7 @@ const CLASS_NAME_CHIP = 'chip';
 const CLASS_NAME_CHIP_DISMISS = 'chip-dismiss';
 const CLASS_NAME_ACTIVE$2 = 'active';
 const DEFAULT_DISMISS_ICON = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>';
-const Default$6 = {
+const Default$7 = {
   separator: ',',
   allowDuplicates: false,
   maxChips: null,
@@ -5128,7 +5162,7 @@ const Default$6 = {
   dismissIcon: DEFAULT_DISMISS_ICON,
   createOnBlur: true
 };
-const DefaultType$6 = {
+const DefaultType$7 = {
   separator: '(string|null)',
   allowDuplicates: 'boolean',
   maxChips: '(number|null)',
@@ -5159,13 +5193,13 @@ class Chips extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$6;
+    return Default$7;
   }
   static get DefaultType() {
-    return DefaultType$6;
+    return DefaultType$7;
   }
   static get NAME() {
-    return NAME$7;
+    return NAME$8;
   }
 
   // Public
@@ -5194,7 +5228,7 @@ class Chips extends BaseComponent {
     const chip = this._createChip(trimmedValue);
     this._element.insertBefore(chip, this._input);
     this._chips.push(trimmedValue);
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
       values: this.getValues()
     });
     return chip;
@@ -5230,7 +5264,7 @@ class Chips extends BaseComponent {
     // Remove from DOM and array
     chip.remove();
     this._chips = this._chips.filter(v => v !== value);
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
       values: this.getValues()
     });
     return true;
@@ -5256,7 +5290,7 @@ class Chips extends BaseComponent {
     this._chips = [];
     this._selectedChips.clear();
     this._anchorChip = null;
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
+    EventHandler.trigger(this._element, EVENT_CHANGE$1, {
       values: []
     });
   }
@@ -5659,7 +5693,7 @@ class Chips extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$4}${DATA_API_KEY$1}`, () => {
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$5}${DATA_API_KEY$2}`, () => {
   for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {
     Chips.getOrCreateInstance(element);
   }
@@ -5772,8 +5806,8 @@ function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
  * Constants
  */
 
-const NAME$6 = 'TemplateFactory';
-const Default$5 = {
+const NAME$7 = 'TemplateFactory';
+const Default$6 = {
   allowList: DefaultAllowlist,
   content: {},
   // { selector : text ,  selector2 : text2 , }
@@ -5783,7 +5817,7 @@ const Default$5 = {
   sanitizeFn: null,
   template: '<div></div>'
 };
-const DefaultType$5 = {
+const DefaultType$6 = {
   allowList: 'object',
   content: 'object',
   extraClass: '(string|function)',
@@ -5809,13 +5843,13 @@ class TemplateFactory extends Config {
 
   // Getters
   static get Default() {
-    return Default$5;
+    return Default$6;
   }
   static get DefaultType() {
-    return DefaultType$5;
+    return DefaultType$6;
   }
   static get NAME() {
-    return NAME$6;
+    return NAME$7;
   }
 
   // Public
@@ -5908,8 +5942,9 @@ class TemplateFactory extends Config {
  * Constants
  */
 
-const NAME$5 = 'tooltip';
+const NAME$6 = 'tooltip';
 const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
+const ESCAPE_KEY = 'Escape';
 const CLASS_NAME_FADE$2 = 'fade';
 const CLASS_NAME_MODAL = 'modal';
 const CLASS_NAME_SHOW$2 = 'show';
@@ -5931,6 +5966,7 @@ const EVENT_FOCUSIN$2 = 'focusin';
 const EVENT_FOCUSOUT$1 = 'focusout';
 const EVENT_MOUSEENTER$1 = 'mouseenter';
 const EVENT_MOUSELEAVE = 'mouseleave';
+const EVENT_KEYDOWN$1 = 'keydown';
 const AttachmentMap = {
   AUTO: 'auto',
   TOP: 'top',
@@ -5938,7 +5974,7 @@ const AttachmentMap = {
   BOTTOM: 'bottom',
   LEFT: isRTL() ? 'right' : 'left'
 };
-const Default$4 = {
+const Default$5 = {
   allowList: DefaultAllowlist,
   animation: true,
   boundary: 'clippingParents',
@@ -5957,7 +5993,7 @@ const Default$4 = {
   title: '',
   trigger: 'hover focus'
 };
-const DefaultType$4 = {
+const DefaultType$5 = {
   allowList: 'object',
   animation: 'boolean',
   boundary: '(string|element)',
@@ -5994,6 +6030,7 @@ class Tooltip extends BaseComponent {
     this._isHovered = null;
     this._activeTrigger = {};
     this._floatingCleanup = null;
+    this._keydownHandler = null;
     this._templateFactory = null;
     this._newContent = null;
     this._mediaQueryListeners = [];
@@ -6010,13 +6047,13 @@ class Tooltip extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$4;
+    return Default$5;
   }
   static get DefaultType() {
-    return DefaultType$4;
+    return DefaultType$5;
   }
   static get NAME() {
-    return NAME$5;
+    return NAME$6;
   }
 
   // Public
@@ -6041,6 +6078,7 @@ class Tooltip extends BaseComponent {
   }
   dispose() {
     clearTimeout(this._timeout);
+    this._removeEscapeListener();
     EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
     if (this._element.getAttribute('data-bs-original-title')) {
       this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
@@ -6079,6 +6117,9 @@ class Tooltip extends BaseComponent {
     await this._createFloating(tip);
     tip.classList.add(CLASS_NAME_SHOW$2);
 
+    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)
+    this._setEscapeListener();
+
     // 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
@@ -6105,6 +6146,7 @@ class Tooltip extends BaseComponent {
     if (hideEvent.defaultPrevented) {
       return;
     }
+    this._removeEscapeListener();
     const tip = this._getTipElement();
     tip.classList.remove(CLASS_NAME_SHOW$2);
 
@@ -6389,6 +6431,37 @@ class Tooltip extends BaseComponent {
     };
     EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
   }
+  _setEscapeListener() {
+    if (this._keydownHandler) {
+      return;
+    }
+    this._keydownHandler = event => {
+      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {
+        return;
+      }
+
+      // Dismiss the tooltip and consume the keystroke so it doesn't reach
+      // ancestor components (e.g. a parent dialog). This way the first Escape
+      // only closes the tooltip, and a subsequent one can close the dialog —
+      // matching the behavior of the dropdown menu.
+      event.preventDefault();
+      event.stopPropagation();
+      this.hide();
+    };
+
+    // Listen in the capture phase so this runs before the dialog's own keydown
+    // handler, and on the document so it works regardless of where focus is
+    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture
+    // phase for delegated listeners, so attach natively here.
+    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN$1, this._keydownHandler, true);
+  }
+  _removeEscapeListener() {
+    if (!this._keydownHandler) {
+      return;
+    }
+    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN$1, this._keydownHandler, true);
+    this._keydownHandler = null;
+  }
   _fixTitle() {
     const title = this._element.getAttribute('title');
     if (!title) {
@@ -6525,14 +6598,14 @@ EventHandler.on(document, EVENT_MOUSEENTER$1, SELECTOR_DATA_TOGGLE$3, initToolti
  * Constants
  */
 
-const NAME$4 = 'popover';
+const NAME$5 = 'popover';
 const SELECTOR_TITLE = '.popover-header';
 const SELECTOR_CONTENT = '.popover-body';
 const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="popover"]';
 const EVENT_CLICK$2 = 'click';
 const EVENT_FOCUSIN$1 = 'focusin';
 const EVENT_MOUSEENTER = 'mouseenter';
-const Default$3 = {
+const Default$4 = {
   ...Tooltip.Default,
   content: '',
   offset: [0, 8],
@@ -6540,7 +6613,7 @@ const Default$3 = {
   template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
   trigger: 'click'
 };
-const DefaultType$3 = {
+const DefaultType$4 = {
   ...Tooltip.DefaultType,
   content: '(null|string|element|function)'
 };
@@ -6552,13 +6625,13 @@ const DefaultType$3 = {
 class Popover extends Tooltip {
   // Getters
   static get Default() {
-    return Default$3;
+    return Default$4;
   }
   static get DefaultType() {
-    return DefaultType$3;
+    return DefaultType$4;
   }
   static get NAME() {
-    return NAME$4;
+    return NAME$5;
   }
 
   // Overrides
@@ -6605,6 +6678,209 @@ EventHandler.on(document, EVENT_CLICK$2, SELECTOR_DATA_TOGGLE$2, initPopover);
 EventHandler.on(document, EVENT_FOCUSIN$1, SELECTOR_DATA_TOGGLE$2, initPopover);
 EventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE$2, initPopover);
 
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap range.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME$4 = 'range';
+const DATA_KEY$4 = 'bs.range';
+const EVENT_KEY$4 = `.${DATA_KEY$4}`;
+const DATA_API_KEY$1 = '.data-api';
+const EVENT_CHANGED = `changed${EVENT_KEY$4}`;
+const EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY$4}${DATA_API_KEY$1}`;
+
+// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw
+const EVENT_INPUT = 'input';
+const EVENT_CHANGE = 'change';
+const SELECTOR_RANGE = '.form-range';
+const SELECTOR_INPUT = '.form-range-input';
+const CLASS_NAME_BUBBLE = 'form-range-bubble';
+const CLASS_NAME_TICKS = 'form-range-ticks';
+const CLASS_NAME_TICK = 'form-range-tick';
+const CLASS_NAME_TICK_LABEL = 'form-range-tick-label';
+
+// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the
+// plugin must write the prefixed names to interoperate with the rendered CSS.
+const PROPERTY_FILL = '--bs-range-fill';
+const Default$3 = {
+  bubble: false,
+  // Show a value bubble above the thumb
+  formatter: null // (value) => string, for the bubble and tick labels
+};
+const DefaultType$3 = {
+  bubble: '(boolean|null)',
+  formatter: '(function|null)'
+};
+
+/**
+ * Class definition
+ */
+
+class Range extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+
+    // BaseComponent bails (no `_element`) when the element can't be resolved
+    if (!this._element) {
+      return;
+    }
+    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element);
+    if (!this._input) {
+      return;
+    }
+    this._bubble = null;
+    this._bubbleText = null;
+    this._ticks = null;
+    this._updateHandler = () => this._update();
+    if (this._config.bubble) {
+      this._createBubble();
+    }
+    this._createTicks();
+    this._addEventListeners();
+    this._update();
+  }
+
+  // Getters
+  static get Default() {
+    return Default$3;
+  }
+  static get DefaultType() {
+    return DefaultType$3;
+  }
+  static get NAME() {
+    return NAME$4;
+  }
+
+  // Public
+  update() {
+    this._update();
+  }
+  dispose() {
+    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler);
+    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler);
+    this._bubble?.remove();
+    this._ticks?.remove();
+    super.dispose();
+  }
+
+  // Private
+  _configAfterMerge(config) {
+    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled
+    if (config.bubble === null) {
+      config.bubble = true;
+    }
+    return config;
+  }
+  _addEventListeners() {
+    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler);
+    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler);
+  }
+  _min() {
+    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min);
+  }
+  _max() {
+    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max);
+  }
+  _value() {
+    return Number.parseFloat(this._input.value);
+  }
+  _ratio() {
+    const span = this._max() - this._min();
+    return span > 0 ? (this._value() - this._min()) / span : 0;
+  }
+  _update() {
+    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS
+    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`);
+    if (this._bubbleText) {
+      this._bubbleText.textContent = this._format(this._value());
+    }
+    EventHandler.trigger(this._input, EVENT_CHANGED, {
+      value: this._value()
+    });
+  }
+  _format(value) {
+    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value);
+  }
+  _createBubble() {
+    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles
+    this._bubble = document.createElement('output');
+    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`;
+    this._bubble.setAttribute('aria-hidden', 'true');
+
+    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,
+    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.
+    const arrow = document.createElement('div');
+    arrow.className = 'tooltip-arrow';
+    this._bubbleText = document.createElement('div');
+    this._bubbleText.className = 'tooltip-inner';
+    this._bubble.append(arrow, this._bubbleText);
+    this._input.insertAdjacentElement('afterend', this._bubble);
+  }
+  _createTicks() {
+    const listId = this._input.getAttribute('list');
+    const datalist = listId ? document.getElementById(listId) : null;
+    if (!datalist) {
+      return;
+    }
+    const min = this._min();
+    const span = this._max() - min || 1;
+    const points = [];
+    for (const option of SelectorEngine.find('option', datalist)) {
+      const value = Number.parseFloat(option.value);
+      if (!Number.isNaN(value)) {
+        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks
+        const ratio = Math.min(Math.max((value - min) / span, 0), 1);
+        points.push({
+          ratio,
+          label: option.label
+        });
+      }
+    }
+    if (points.length === 0) {
+      return;
+    }
+    points.sort((a, b) => a.ratio - b.ratio);
+    this._ticks = document.createElement('div');
+    this._ticks.className = CLASS_NAME_TICKS;
+    this._ticks.setAttribute('aria-hidden', 'true');
+
+    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line
+    const stops = [0, ...points.map(point => point.ratio), 1];
+    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ');
+    for (const [index, point] of points.entries()) {
+      const tick = document.createElement('span');
+      tick.className = CLASS_NAME_TICK;
+      tick.style.gridColumnStart = `${index + 2}`;
+      if (point.label) {
+        const label = document.createElement('span');
+        label.className = CLASS_NAME_TICK_LABEL;
+        label.textContent = point.label;
+        tick.append(label);
+      }
+      this._ticks.append(tick);
+    }
+    this._element.append(this._ticks);
+  }
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {
+  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {
+    Range.getOrCreateInstance(element);
+  }
+});
+
 /**
  * --------------------------------------------------------------------------
  * Bootstrap scrollspy.js
@@ -7334,5 +7610,5 @@ class Toggler extends BaseComponent {
 
 eventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle');
 
-export { Alert, Button, Carousel, Chips, Collapse, Combobox, Datepicker, Dialog, Drawer, Menu, NavOverflow, OtpInput, Popover, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
+export { Alert, Button, Carousel, Chips, Collapse, Combobox, Datepicker, Dialog, Drawer, Menu, NavOverflow, OtpInput, Popover, Range, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
 //# sourceMappingURL=bootstrap.js.map
index 4b4ef2f811f89a0583e964b2aa354cbe47e5fd68..02837d2419ba250b4811f8c2053371fe5bbf3046 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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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 [...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 [...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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// How many frames the scroll-settle watcher waits when no movement is ever\n// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before\n// it gives up and restores snapping anyway.\nconst SCROLL_SETTLE_MAX_FRAMES = 10\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    this._snapRestoreFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,\n    // but it also clamps *programmatic* scrolls to one snap point — which would\n    // break multi-slide jumps from an indicator click, `to()`, or wrapping from\n    // the last slide back to the first. Disable snapping for the duration of the\n    // programmatic scroll, then restore it once the scroll settles so the slide\n    // still rests precisely (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({\n      left,\n      top: 0,\n      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets\n      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would\n      // still animate. `'instant'` forces an immediate, motion-free jump.\n      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'\n    })\n    this._restoreSnapWhenSettled(targetLeft, index)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._viewport.scrollBy({\n      left: this._scrollDelta(clone),\n      top: 0,\n      behavior: 'smooth'\n    })\n\n    this._afterScrollSettles(() => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops\n  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps\n  // to the *nearest* snap point, so if we restored mid-animation the viewport\n  // could jump back to the slide we came from — most visible stepping to the\n  // first/last slide, where it looks like the control \"doesn't work\".\n  _restoreSnapWhenSettled(targetLeft, index) {\n    this._afterScrollSettles(() => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer && index !== undefined) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final ~1px settle landing\n      // exactly on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    }, targetLeft)\n  }\n\n  // Invoke `callback` once the viewport stops moving. We watch the scroll\n  // position across frames instead of relying on the `scrollend` event, which\n  // isn't available across our supported browsers yet.\n  //\n  // Crucially, we only start counting \"stable\" frames once the scroll has\n  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first\n  // frame or two, so naively treating those initial unchanged frames as\n  // \"settled\" would re-enable `mandatory` snapping mid-animation — which cancels\n  // the in-flight programmatic scroll and lands on the wrong slide (most visible\n  // in multi-item layouts). If the scroll never moves (delta clamped at an end,\n  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.\n  //\n  // When `targetLeft` is known we also finish the moment we arrive there, so the\n  // snap is restored exactly on the destination snap point and can't re-snap the\n  // viewport backwards (the failure mode where stepping to the first/last slide\n  // appears to do nothing).\n  _afterScrollSettles(callback, targetLeft) {\n    if (typeof requestAnimationFrame === 'undefined') {\n      callback()\n      return\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    let lastLeft = startLeft\n    let stableFrames = 0\n    let waited = 0\n    let hasMoved = false\n\n    const tick = () => {\n      const currentLeft = this._viewport.scrollLeft\n      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1\n\n      if (Math.abs(currentLeft - startLeft) > 1) {\n        hasMoved = true\n      }\n\n      // Only accrue stable frames after movement begins, so the pre-animation\n      // and ease-in frames don't prematurely count as settled.\n      if (hasMoved) {\n        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0\n      }\n\n      lastLeft = currentLeft\n      waited += 1\n\n      if (reachedTarget || (hasMoved && stableFrames >= 3) || (!hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES)) {\n        this._snapRestoreFrame = null\n        callback()\n        return\n      }\n\n      this._snapRestoreFrame = requestAnimationFrame(tick)\n    }\n\n    this._snapRestoreFrame = requestAnimationFrame(tick)\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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 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 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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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 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 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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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","keys","getAny","values","next","value","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","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","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","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_SETTLE_MAX_FRAMES","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_snapRestoreFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","scrollBy","top","behavior","_restoreSnapWhenSettled","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","_afterScrollSettles","requestAnimationFrame","startLeft","lastLeft","stableFrames","waited","hasMoved","tick","currentLeft","reachedTarget","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","progress","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","complete","capitalizedDimension","scrollSize","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","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","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","defaultConfig","_getContainer","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","clientX","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","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","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","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","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","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","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","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","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","closestDialog","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","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","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","scrollTop","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\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(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, 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 [...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 [...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  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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 // menu wrapper\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    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\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 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    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\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 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    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\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    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\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      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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 ESCAPE_KEY = 'Escape'\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'\nconst EVENT_KEYDOWN = 'keydown'\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._keydownHandler = 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    this._removeEscapeListener()\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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\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 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    this._removeEscapeListener()\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 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  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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 range.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 = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\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._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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","keys","getAny","values","next","value","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","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","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","existingInstance","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","complete","capitalizedDimension","scrollSize","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","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","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","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","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","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","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","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","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","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","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTop","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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"}
\ No newline at end of file
index d73529847f33ef3649dd4df67e257ed48539ce0a..8ead48111113234d9540037d481999c444229877 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{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: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||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:r}=i;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return hydrateObj(i,{delegateTarget:r}),s.oneOff&&EventHandler.off(e,i.type,t,n),n.apply(r,[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,r,a]=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)};r=e(r)}const l=getElementEvents(e),c=l[a]||(l[a]={}),_=findHandler(c,r,o?n:null);if(_)return void(_.oneOff=_.oneOff&&i);const h=makeEventUid(r,t.replace(namespaceRegex,"")),u=o?bootstrapDelegationHandler(e,n,r):bootstrapHandler(e,r);u.delegationSelector=o?n:null,u.callable=r,u.oneOff=i,u.uidEvent=h,c[h]=u,e.addEventListener(a,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,r]of Object.entries(i))o.includes(s)&&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,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,r]=normalizeParameters(t,n,s),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,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");a&&!t.includes(i)||removeHandler(e,l,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,l,r,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)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...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$k="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$6="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$f="bs.button",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",CLASS_NAME_ACTIVE$4="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$j}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$i="carousel",DATA_KEY$e="bs.carousel",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$f}`,EVENT_SLID=`slid${EVENT_KEY$f}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$f}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$f}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$f}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$f}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$f}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_SETTLE_MAX_FRAMES=10,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$h={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$h={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._snapRestoreFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._snapRestoreFrame&&cancelAnimationFrame(this._snapRestoreFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$f),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$h.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_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())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:n,top:0,behavior:this._prefersReducedMotion()?"instant":"smooth"}),this._restoreSnapWhenSettled(s,e)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const r=(e?t[0]:t[n]).cloneNode(!0);r.classList.add(CLASS_NAME_CLONE),r.classList.remove("active"),r.removeAttribute("id");for(const e of SelectorEngine.find("[id]",r))e.removeAttribute("id");r.setAttribute("aria-hidden","true"),r.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(r):(this._viewport.prepend(r),this._jumpScroll(this._scrollDelta(t[s]))),this._viewport.scrollBy({left:this._scrollDelta(r),top:0,behavior:"smooth"}),this._afterScrollSettles(()=>{r.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_restoreSnapWhenSettled(e,t){this._afterScrollSettles(()=>{this._viewport.style.scrollSnapType="",this._observer||void 0===t||this._setActive(t),this._updateEndControls()},e)}_afterScrollSettles(e,t){if("undefined"==typeof requestAnimationFrame)return void e();null!==this._snapRestoreFrame&&cancelAnimationFrame(this._snapRestoreFrame);const n=this._viewport.scrollLeft;let s=n,i=0,o=0,r=!1;const a=()=>{const l=this._viewport.scrollLeft,c=void 0!==t&&Math.abs(l-t)<=1;if(Math.abs(l-n)>1&&(r=!0),r&&(i=Math.abs(l-s)<1?i+1:0),s=l,o+=1,c||r&&i>=3||!r&&o>=10)return this._snapRestoreFrame=null,void e();this._snapRestoreFrame=requestAnimationFrame(a)};this._snapRestoreFrame=requestAnimationFrame(a)}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(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"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}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);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$h="collapse",DATA_KEY$d="bs.collapse",EVENT_KEY$e=`.${DATA_KEY$d}`,DATA_API_KEY$9=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$e}`,EVENT_SHOWN$6=`shown${EVENT_KEY$e}`,EVENT_HIDE$6=`hide${EVENT_KEY$e}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$e}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$e}.data-api`,CLASS_NAME_SHOW$5="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$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$6)},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$6).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$d=".bs.menu",DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY$1="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$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="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$4="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$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of 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$5,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$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of 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:r,placement:a}=await computePosition(e,t,{placement:n,middleware:s,strategy:i});return t.isConnected?(Object.assign(t.style,{position:i,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",".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})],r=()=>this._applyFloatingPosition(s,t,i,o);return r(),autoUpdate(s,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(),s={x:e.clientX,y:e.clientY},i={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(s,i,r,a)}_pointInTriangle(e,t,n,s){const i=triangleSign(e,t,n),o=triangleSign(e,n,s),r=triangleSign(e,s,t);return!((i<0||o<0||r<0)&&(i>0||o>0||r>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,r=n.closest(".submenu"),a=r&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&a){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===i&&a){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),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.at(-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),r=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),a=e.target.matches(".submenu > .menu-item");if(!(s||n||i||o||r&&a))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||r&&a)||!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$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",ESCAPE_KEY="Escape",TAB_KEY="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$2=`change${EVENT_KEY$c}`,EVENT_SHOW$5=`show${EVENT_KEY$c}`,EVENT_SHOWN$4=`shown${EVENT_KEY$c}`,EVENT_HIDE$4=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$c}.data-api`,CLASS_NAME_SHOW$3="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$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).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$c),EventHandler.off(this._toggle,EVENT_KEY$c),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$2,{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.at(-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.at(-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$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_CHANGE$1=`change${EVENT_KEY$b}`,EVENT_SHOW$4=`show${EVENT_KEY$b}`,EVENT_SHOWN$3=`shown${EVENT_KEY$b}`,EVENT_HIDE$3=`hide${EVENT_KEY$b}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$b}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$b}.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$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).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$1,{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$b}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.body.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.body.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$d="dialog",DATA_KEY$9="bs.dialog",EVENT_KEY$a=`.${DATA_KEY$9}`,DATA_API_KEY$5=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$a}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$a}`,EVENT_CANCEL=`cancel${EVENT_KEY$a}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$a}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$c={backdrop:!0,keyboard:!0,modal:!0},DefaultType$c={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}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$3,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){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$a}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$c="navoverflow",DATA_KEY$8="bs.navoverflow",EVENT_KEY$9=`.${DATA_KEY$8}`,EVENT_UPDATE=`update${EVENT_KEY$9}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$9}`,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",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$b={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",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={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",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._collapseBelow=0,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._collapseBelow=this._resolveCollapseBelow(),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=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_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");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,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="swipe",EVENT_KEY$8=".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$a={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$a={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(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._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_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$a="drawer",DATA_KEY$7="bs.drawer",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$7}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$7}`,EVENT_RESIZE=`resize${EVENT_KEY$7}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$7}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$9={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$9={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}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("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$9="strength",DATA_KEY$6="bs.strength",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$6}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$8={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$8={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$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}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$6}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$8="otpInput",DATA_KEY$5="bs.otpInput",EVENT_KEY$5=`.${DATA_KEY$5}`,DATA_API_KEY$2=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$5}`,EVENT_INPUT=`input${EVENT_KEY$5}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$5}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT="input",SYNC_EVENTS=["blur","keyup","click","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$7={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$7={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus();const e=this._input.value.length;this._input.setSelectionRange(e,e),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onFocus=()=>this.focus(),this._onSync=()=>this._render(),EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),this._render(),EventHandler.trigger(this._element,EVENT_INPUT,{value:this._input.value}),this._checkComplete()}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$7="chips",DATA_KEY$4="bs.chips",EVENT_KEY$4=".bs.chips",DATA_API_KEY$1=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$6={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$6={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),r=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=r;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.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=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...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"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),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 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 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:r,placement:a,middlewareData:l}=await computePosition(this._element,e,i);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,s=a.startsWith("top")||a.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);t&&Tooltip.getOrCreateInstance(t)};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);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};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"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';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=e.key===HOME_KEY?t[0]:t.at(-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,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,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: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||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:r}=i;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return hydrateObj(i,{delegateTarget:r}),s.oneOff&&EventHandler.off(e,i.type,t,n),n.apply(r,[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,r,a]=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)};r=e(r)}const l=getElementEvents(e),c=l[a]||(l[a]={}),_=findHandler(c,r,o?n:null);if(_)return void(_.oneOff=_.oneOff&&i);const h=makeEventUid(r,t.replace(namespaceRegex,"")),u=o?bootstrapDelegationHandler(e,n,r):bootstrapHandler(e,r);u.delegationSelector=o?n:null,u.callable=r,u.oneOff=i,u.uidEvent=h,c[h]=u,e.addEventListener(a,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,r]of Object.entries(i))o.includes(s)&&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,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,r]=normalizeParameters(t,n,s),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,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");a&&!t.includes(i)||removeHandler(e,l,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,l,r,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){if(super(),!(e=getElement(e)))return;this._element=e,this._config=this._getConfig(t);const n=Data.get(this._element,this.constructor.DATA_KEY);n&&n.dispose(),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(()=>{this._element&&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)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...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},closest:(e,t)=>Element.prototype.closest.call(e,t),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$h="bs.alert",EVENT_KEY$i=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$6="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$g="bs.button",EVENT_KEY$h=`.${DATA_KEY$g}`,DATA_API_KEY$c=".data-api",CLASS_NAME_ACTIVE$4="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$h}.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="carousel",DATA_KEY$f="bs.carousel",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$g}`,EVENT_SLID=`slid${EVENT_KEY$g}`,EVENT_KEYDOWN$2=`keydown${EVENT_KEY$g}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$g}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$g}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$g}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$g}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$g}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_DURATION=300,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$i={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$i={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"},easeInOutCubic=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._scrollFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._scrollFrame&&cancelAnimationFrame(this._scrollFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$g),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$i.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$2,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())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._animateScroll(s,()=>{this._viewport.style.scrollSnapType="",this._observer||this._setActive(e),this._updateEndControls()})}_animateScroll(e,t){null!==this._scrollFrame&&(cancelAnimationFrame(this._scrollFrame),this._scrollFrame=null);const n=this._viewport.scrollLeft,s=e-n;if(this._prefersReducedMotion()||"undefined"==typeof requestAnimationFrame)return this._viewport.scrollTo({left:e,behavior:"instant"}),void t();let i=null;const o=r=>{null===i&&(i=r);const a=Math.min((r-i)/300,1);this._viewport.scrollTo({left:n+s*easeInOutCubic(a),behavior:"instant"}),a<1?this._scrollFrame=requestAnimationFrame(o):(this._viewport.scrollTo({left:e,behavior:"instant"}),this._scrollFrame=null,t())};this._scrollFrame=requestAnimationFrame(o)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const r=(e?t[0]:t[n]).cloneNode(!0);r.classList.add(CLASS_NAME_CLONE),r.classList.remove("active"),r.removeAttribute("id");for(const e of SelectorEngine.find("[id]",r))e.removeAttribute("id");r.setAttribute("aria-hidden","true"),r.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(r):(this._viewport.prepend(r),this._jumpScroll(this._scrollDelta(t[s]))),this._animateScroll(this._viewport.scrollLeft+this._scrollDelta(r),()=>{r.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(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"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}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);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$i="collapse",DATA_KEY$e="bs.collapse",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$f}`,EVENT_SHOWN$6=`shown${EVENT_KEY$f}`,EVENT_HIDE$6=`hide${EVENT_KEY$f}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$f}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_SHOW$5="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$h={parent:null,toggle:!0},DefaultType$h={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$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}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$6)},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$6).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$h="menu",DATA_KEY$d="bs.menu",EVENT_KEY$e=".bs.menu",DATA_API_KEY$9=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="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$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="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$4="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$g={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$g={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._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),!this._config.menu&&this._menu&&(this._parent=this._findWrapper(this._menu)),this._isSubmenu=this._parent.classList?.contains("submenu"),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}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$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of 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$5,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(){const e=SelectorEngine.closest(this._element,":has(.menu)");return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",e||this._parent)}_findWrapper(e){let t=this._element.parentNode;for(;t instanceof Element&&!t.contains(e);)t=t.parentNode;return t instanceof Element?t:this._element.parentNode}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of 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:r,placement:a}=await computePosition(e,t,{placement:n,middleware:s,strategy:i});return t.isConnected?(Object.assign(t.style,{position:i,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",".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.style.opacity="0",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.opacity=""}_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})],r=()=>this._applyFloatingPosition(s,t,i,o).then(e=>(t.style.opacity="",e));return r(),autoUpdate(s,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(),s={x:e.clientX,y:e.clientY},i={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(s,i,r,a)}_pointInTriangle(e,t,n,s){const i=triangleSign(e,t,n),o=triangleSign(e,n,s),r=triangleSign(e,s,t);return!((i<0||o<0||r<0)&&(i>0||o>0||r>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,r=n.closest(".submenu"),a=r&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&a){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===i&&a){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),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.at(-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),r=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),a=e.target.matches(".submenu > .menu-item");if(!(s||n||i||o||r&&a))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||r&&a)||!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$g="combobox",DATA_KEY$c="bs.combobox",EVENT_KEY$d=`.${DATA_KEY$c}`,DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY="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$3=`change${EVENT_KEY$d}`,EVENT_SHOW$5=`show${EVENT_KEY$d}`,EVENT_SHOWN$4=`shown${EVENT_KEY$d}`,EVENT_HIDE$4=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$3="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$f={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$f={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$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).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$d),EventHandler.off(this._toggle,EVENT_KEY$d),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$3,{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.at(-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.at(-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$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",EVENT_CHANGE$2=`change${EVENT_KEY$c}`,EVENT_SHOW$4=`show${EVENT_KEY$c}`,EVENT_SHOWN$3=`shown${EVENT_KEY$c}`,EVENT_HIDE$3=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$c}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$c}.data-api`,SELECTOR_DATA_TOGGLE$6='[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$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).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$2,{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$c}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.body.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.body.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$b}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$b}`,EVENT_CANCEL=`cancel${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}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$3,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){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$b}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$d="navoverflow",DATA_KEY$9="bs.navoverflow",EVENT_KEY$a=`.${DATA_KEY$9}`,EVENT_UPDATE=`update${EVENT_KEY$a}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$a}`,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",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$c={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",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$c={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",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._collapseBelow=0,this._isInitialized=!1,this._init()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}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._collapseBelow=this._resolveCollapseBelow(),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=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_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");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,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$c="swipe",EVENT_KEY$9=".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$b={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$b={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(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._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_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$b="drawer",DATA_KEY$8="bs.drawer",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$8}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$8}`,EVENT_RESIZE=`resize${EVENT_KEY$8}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$8}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$a={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$a={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}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("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$a="strength",DATA_KEY$7="bs.strength",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$7}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$9={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$9={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$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}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$7}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$9="otpInput",DATA_KEY$6="bs.otpInput",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$6}`,EVENT_INPUT$1=`input${EVENT_KEY$6}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$6}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT$1="input",SYNC_EVENTS=["blur","keyup","click","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$8={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$8={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus();const e=this._input.value.length;this._input.setSelectionRange(e,e),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onFocus=()=>this.focus(),this._onSync=()=>this._render(),EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),this._render(),EventHandler.trigger(this._element,EVENT_INPUT$1,{value:this._input.value}),this._checkComplete()}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$8="chips",DATA_KEY$5="bs.chips",EVENT_KEY$5=".bs.chips",DATA_API_KEY$2=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE$1="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$7={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$7={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),r=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=r;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.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=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...t["*"]||[],...t[n]||[]];for(const t of s)allowedAttribute(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}const NAME$7="TemplateFactory",Default$6={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$6={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$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}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$6="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),ESCAPE_KEY="Escape",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",EVENT_KEYDOWN$1="keydown",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$5={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$5={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._keydownHandler=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$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}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),this._removeEscapeListener(),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"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),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"),this._setEscapeListener(),"ontouchstart"in document.documentElement)for(const e of 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._removeEscapeListener(),this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of 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:r,placement:a,middlewareData:l}=await computePosition(this._element,e,i);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,s=a.startsWith("top")||a.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)}_setEscapeListener(){this._keydownHandler||(this._keydownHandler=e=>{"Escape"===e.key&&this._isShown()&&this.tip.isConnected&&(e.preventDefault(),e.stopPropagation(),this.hide())},this._element.ownerDocument.addEventListener("keydown",this._keydownHandler,!0))}_removeEscapeListener(){this._keydownHandler&&(this._element.ownerDocument.removeEventListener("keydown",this._keydownHandler,!0),this._keydownHandler=null)}_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);t&&Tooltip.getOrCreateInstance(t)};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$5="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$4={...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$4={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}_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);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};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$4="range",DATA_KEY$4="bs.range",EVENT_KEY$4=".bs.range",DATA_API_KEY$1=".data-api",EVENT_CHANGED="changed.bs.range",EVENT_DOM_CONTENT_LOADED="DOMContentLoaded.bs.range.data-api",EVENT_INPUT="input",EVENT_CHANGE="change",SELECTOR_RANGE=".form-range",SELECTOR_INPUT=".form-range-input",CLASS_NAME_BUBBLE="form-range-bubble",CLASS_NAME_TICKS="form-range-ticks",CLASS_NAME_TICK="form-range-tick",CLASS_NAME_TICK_LABEL="form-range-tick-label",PROPERTY_FILL="--bs-range-fill",Default$3={bubble:!1,formatter:null},DefaultType$3={bubble:"(boolean|null)",formatter:"(function|null)"};class Range extends BaseComponent{constructor(e,t){super(e,t),this._element&&(this._input=SelectorEngine.findOne(SELECTOR_INPUT,this._element),this._input&&(this._bubble=null,this._bubbleText=null,this._ticks=null,this._updateHandler=()=>this._update(),this._config.bubble&&this._createBubble(),this._createTicks(),this._addEventListeners(),this._update()))}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}update(){this._update()}dispose(){EventHandler.off(this._input,"input",this._updateHandler),EventHandler.off(this._input,"change",this._updateHandler),this._bubble?.remove(),this._ticks?.remove(),super.dispose()}_configAfterMerge(e){return null===e.bubble&&(e.bubble=!0),e}_addEventListeners(){EventHandler.on(this._input,"input",this._updateHandler),EventHandler.on(this._input,"change",this._updateHandler)}_min(){return""===this._input.min?0:Number.parseFloat(this._input.min)}_max(){return""===this._input.max?100:Number.parseFloat(this._input.max)}_value(){return Number.parseFloat(this._input.value)}_ratio(){const e=this._max()-this._min();return e>0?(this._value()-this._min())/e:0}_update(){this._element.style.setProperty(PROPERTY_FILL,`${this._ratio()}`),this._bubbleText&&(this._bubbleText.textContent=this._format(this._value())),EventHandler.trigger(this._input,EVENT_CHANGED,{value:this._value()})}_format(e){return"function"==typeof this._config.formatter?this._config.formatter(e):String(e)}_createBubble(){this._bubble=document.createElement("output"),this._bubble.className=`${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`,this._bubble.setAttribute("aria-hidden","true");const e=document.createElement("div");e.className="tooltip-arrow",this._bubbleText=document.createElement("div"),this._bubbleText.className="tooltip-inner",this._bubble.append(e,this._bubbleText),this._input.insertAdjacentElement("afterend",this._bubble)}_createTicks(){const e=this._input.getAttribute("list"),t=e?document.getElementById(e):null;if(!t)return;const n=this._min(),s=this._max()-n||1,i=[];for(const e of SelectorEngine.find("option",t)){const t=Number.parseFloat(e.value);if(!Number.isNaN(t)){const o=Math.min(Math.max((t-n)/s,0),1);i.push({ratio:o,label:e.label})}}if(0===i.length)return;i.sort((e,t)=>e.ratio-t.ratio),this._ticks=document.createElement("div"),this._ticks.className=CLASS_NAME_TICKS,this._ticks.setAttribute("aria-hidden","true");const o=[0,...i.map(e=>e.ratio),1];this._ticks.style.gridTemplateColumns=o.slice(1).map((e,t)=>e-o[t]+"fr").join(" ");for(const[e,t]of i.entries()){const n=document.createElement("span");if(n.className=CLASS_NAME_TICK,n.style.gridColumnStart=`${e+2}`,t.label){const e=document.createElement("span");e.className=CLASS_NAME_TICK_LABEL,e.textContent=t.label,n.append(e)}this._ticks.append(n)}this._element.append(this._ticks)}}EventHandler.on(document,EVENT_DOM_CONTENT_LOADED,()=>{for(const e of SelectorEngine.find(".form-range"))Range.getOrCreateInstance(e)});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"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';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=e.key===HOME_KEY?t[0]:t.at(-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,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,OtpInput,Popover,Range,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
 //# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
index 35037f8128cf1f27c4e419d8c326be248002f321..e7f5e288e868c38544d1aa6a1d35f4e5a3812823 100644 (file)
@@ -1 +1 @@
-{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","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","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","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","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_SETTLE_MAX_FRAMES","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_snapRestoreFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","scrollBy","top","behavior","_restoreSnapWhenSettled","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","_afterScrollSettles","undefined","requestAnimationFrame","startLeft","lastLeft","stableFrames","waited","hasMoved","tick","currentLeft","reachedTarget","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","progress","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","scrollSize","complete","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","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_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","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","defaultConfig","_getContainer","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","clientX","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","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","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","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","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","getTime","formatted","String","getDate","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","iconHtml","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","reduce","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","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","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","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","closestDialog","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","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","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","scrollTop","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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 [...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 [...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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// How many frames the scroll-settle watcher waits when no movement is ever\n// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before\n// it gives up and restores snapping anyway.\nconst SCROLL_SETTLE_MAX_FRAMES = 10\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    this._snapRestoreFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,\n    // but it also clamps *programmatic* scrolls to one snap point — which would\n    // break multi-slide jumps from an indicator click, `to()`, or wrapping from\n    // the last slide back to the first. Disable snapping for the duration of the\n    // programmatic scroll, then restore it once the scroll settles so the slide\n    // still rests precisely (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({\n      left,\n      top: 0,\n      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets\n      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would\n      // still animate. `'instant'` forces an immediate, motion-free jump.\n      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'\n    })\n    this._restoreSnapWhenSettled(targetLeft, index)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._viewport.scrollBy({\n      left: this._scrollDelta(clone),\n      top: 0,\n      behavior: 'smooth'\n    })\n\n    this._afterScrollSettles(() => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops\n  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps\n  // to the *nearest* snap point, so if we restored mid-animation the viewport\n  // could jump back to the slide we came from — most visible stepping to the\n  // first/last slide, where it looks like the control \"doesn't work\".\n  _restoreSnapWhenSettled(targetLeft, index) {\n    this._afterScrollSettles(() => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer && index !== undefined) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final ~1px settle landing\n      // exactly on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    }, targetLeft)\n  }\n\n  // Invoke `callback` once the viewport stops moving. We watch the scroll\n  // position across frames instead of relying on the `scrollend` event, which\n  // isn't available across our supported browsers yet.\n  //\n  // Crucially, we only start counting \"stable\" frames once the scroll has\n  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first\n  // frame or two, so naively treating those initial unchanged frames as\n  // \"settled\" would re-enable `mandatory` snapping mid-animation — which cancels\n  // the in-flight programmatic scroll and lands on the wrong slide (most visible\n  // in multi-item layouts). If the scroll never moves (delta clamped at an end,\n  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.\n  //\n  // When `targetLeft` is known we also finish the moment we arrive there, so the\n  // snap is restored exactly on the destination snap point and can't re-snap the\n  // viewport backwards (the failure mode where stepping to the first/last slide\n  // appears to do nothing).\n  _afterScrollSettles(callback, targetLeft) {\n    if (typeof requestAnimationFrame === 'undefined') {\n      callback()\n      return\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    let lastLeft = startLeft\n    let stableFrames = 0\n    let waited = 0\n    let hasMoved = false\n\n    const tick = () => {\n      const currentLeft = this._viewport.scrollLeft\n      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1\n\n      if (Math.abs(currentLeft - startLeft) > 1) {\n        hasMoved = true\n      }\n\n      // Only accrue stable frames after movement begins, so the pre-animation\n      // and ease-in frames don't prematurely count as settled.\n      if (hasMoved) {\n        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0\n      }\n\n      lastLeft = currentLeft\n      waited += 1\n\n      if (reachedTarget || (hasMoved && stableFrames >= 3) || (!hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES)) {\n        this._snapRestoreFrame = null\n        callback()\n        return\n      }\n\n      this._snapRestoreFrame = requestAnimationFrame(tick)\n    }\n\n    this._snapRestoreFrame = requestAnimationFrame(tick)\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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 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 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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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 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 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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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
+{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","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","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","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","existingInstance","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","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","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","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","scrollSize","complete","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","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","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","body","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","at","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","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","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","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","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","getTime","formatted","String","getDate","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","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","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","iconHtml","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","reduce","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","_initSwipe","swipeConfig","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","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","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","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","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_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","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","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTop","_observerCallback","targetElement","activate","_process","userScrollsDown","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","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/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-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.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: ${[...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  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || 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 falsely 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    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\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(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, 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 [...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 [...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  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\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 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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\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 // menu wrapper\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    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\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 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    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\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 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    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\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    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\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      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\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.at(-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.at(-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.at(-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-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\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(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('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(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      document.body.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down body-scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\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${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.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_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\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 DialogBase {\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  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\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 (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\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 SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\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  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\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._collapseBelow = 0\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    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\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 iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\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=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\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  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\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\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\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      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      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\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/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  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(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._deltaY = 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      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\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 drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\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 Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = 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  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\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    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\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.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\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._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.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 = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\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  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.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_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\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 = [...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 = [...element.attributes]\n    const allowedAttributes = [...(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 ESCAPE_KEY = 'Escape'\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'\nconst EVENT_KEYDOWN = 'keydown'\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._keydownHandler = 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    this._removeEscapeListener()\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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\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 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    this._removeEscapeListener()\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 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  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\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 (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, 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 range.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 = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\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._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\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\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\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 = event.key === HOME_KEY ? children[0] : children.at(-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":";;;;;4HAWA,MAAMA,WAAa,IAAIC,IAEvBC,KAAe,CACbC,IAAIC,EAASC,EAAKC,GACXN,WAAWO,IAAIH,IAClBJ,WAAWG,IAAIC,EAAS,IAAIH,KAG9B,MAAMO,EAAcR,WAAWS,IAAIL,GAI9BI,EAAYD,IAAIF,IAA6B,IAArBG,EAAYE,KAMzCF,EAAYL,IAAIE,EAAKC,GAJnBK,QAAQC,MAAM,+EAA+E,IAAIJ,EAAYK,QAAQ,MAKzH,EAEAJ,IAAGA,CAACL,EAASC,IACPL,WAAWO,IAAIH,IACVJ,WAAWS,IAAIL,GAASK,IAAIJ,IAG9B,KAGTS,OAAOV,GACDJ,WAAWO,IAAIH,IACVJ,WAAWS,IAAIL,GAASW,SAASC,OAAOC,OAG1C,KAGTC,OAAOd,EAASC,GACd,IAAKL,WAAWO,IAAIH,GAClB,OAGF,MAAMI,EAAcR,WAAWS,IAAIL,GAEnCI,EAAYW,OAAOd,GAGM,IAArBG,EAAYE,MACdV,WAAWmB,OAAOf,EAEtB,GClDIgB,eAAiB,qBACjBC,eAAiB,OACjBC,cAAgB,SAChBC,cAAgB,GACtB,IAAIC,SAAW,EACf,MAAMC,aAAe,CACnBC,WAAY,YACZC,WAAY,YAGRC,aAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOF,SAASC,aAAa1B,EAAS2B,GAC7B,OAAQA,GAAO,GAAGA,MAAQP,cAAiBpB,EAAQoB,UAAYA,UACjE,CAEA,SAASQ,iBAAiB5B,GACxB,MAAM2B,EAAMD,aAAa1B,GAKzB,OAHAA,EAAQoB,SAAWO,EACnBR,cAAcQ,GAAOR,cAAcQ,IAAQ,GAEpCR,cAAcQ,EACvB,CAEA,SAASE,iBAAiB7B,EAAS8B,GACjC,OAAO,SAASC,EAAQC,GAOtB,OANAC,WAAWD,EAAO,CAAEE,eAAgBlC,IAEhC+B,EAAQI,QACVC,aAAaC,IAAIrC,EAASgC,EAAMM,KAAMR,GAGjCA,EAAGS,MAAMvC,EAAS,CAACgC,GAC5B,CACF,CAEA,SAASQ,2BAA2BxC,EAASyC,EAAUX,GACrD,OAAO,SAASC,EAAQC,GACtB,MAAMU,EAAc1C,EAAQ2C,iBAAiBF,GAE7C,IAAK,IAAIG,OAAEA,GAAWZ,EAAOY,GAAUA,IAAWC,KAAMD,EAASA,EAAOE,WACtE,IAAK,MAAMC,KAAcL,EACvB,GAAIK,IAAeH,EAUnB,OANAX,WAAWD,EAAO,CAAEE,eAAgBU,IAEhCb,EAAQI,QACVC,aAAaC,IAAIrC,EAASgC,EAAMM,KAAMG,EAAUX,GAG3CA,EAAGS,MAAMK,EAAQ,CAACZ,GAG/B,CACF,CAEA,SAASgB,YAAYC,EAAQC,EAAUC,EAAqB,MAC1D,OAAOC,OAAOzC,OAAOsC,GAClBI,KAAKrB,GAASA,EAAMkB,WAAaA,GAAYlB,EAAMmB,qBAAuBA,EAC/E,CAEA,SAASG,oBAAoBC,EAAmBxB,EAASyB,GACvD,MAAMC,EAAiC,iBAAZ1B,EACrBmB,EAAWO,EAAcD,EAAsBzB,GAAWyB,EAChE,IAAIE,EAAYC,aAAaJ,GAM7B,OAJK/B,aAAarB,IAAIuD,KACpBA,EAAYH,GAGP,CAACE,EAAaP,EAAUQ,EACjC,CAEA,SAASE,WAAW5D,EAASuD,EAAmBxB,EAASyB,EAAoBrB,GAC3E,GAAiC,iBAAtBoB,IAAmCvD,EAC5C,OAGF,IAAKyD,EAAaP,EAAUQ,GAAaJ,oBAAoBC,EAAmBxB,EAASyB,GAIzF,GAAID,KAAqBlC,aAAc,CACrC,MAAMwC,EAAe/B,GACZ,SAAUE,GACf,IAAKA,EAAM8B,eAAkB9B,EAAM8B,gBAAkB9B,EAAME,iBAAmBF,EAAME,eAAe6B,SAAS/B,EAAM8B,eAChH,OAAOhC,EAAGkC,KAAKnB,KAAMb,EAEzB,EAGFkB,EAAWW,EAAaX,EAC1B,CAEA,MAAMD,EAASrB,iBAAiB5B,GAC1BiE,EAAWhB,EAAOS,KAAeT,EAAOS,GAAa,IACrDQ,EAAmBlB,YAAYiB,EAAUf,EAAUO,EAAc1B,EAAU,MAEjF,GAAImC,EAGF,YAFAA,EAAiB/B,OAAS+B,EAAiB/B,QAAUA,GAKvD,MAAMR,EAAMD,aAAawB,EAAUK,EAAkBY,QAAQnD,eAAgB,KACvEc,EAAK2B,EACTjB,2BAA2BxC,EAAS+B,EAASmB,GAC7CrB,iBAAiB7B,EAASkD,GAE5BpB,EAAGqB,mBAAqBM,EAAc1B,EAAU,KAChDD,EAAGoB,SAAWA,EACdpB,EAAGK,OAASA,EACZL,EAAGV,SAAWO,EACdsC,EAAStC,GAAOG,EAEhB9B,EAAQoE,iBAAiBV,EAAW5B,EAAI2B,EAC1C,CAEA,SAASY,cAAcrE,EAASiD,EAAQS,EAAW3B,EAASoB,GAC1D,MAAMrB,EAAKkB,YAAYC,EAAOS,GAAY3B,EAASoB,GAE9CrB,IAIL9B,EAAQsE,oBAAoBZ,EAAW5B,EAAIyC,QAAQpB,WAC5CF,EAAOS,GAAW5B,EAAGV,UAC9B,CAEA,SAASoD,yBAAyBxE,EAASiD,EAAQS,EAAWe,GAC5D,MAAMC,EAAoBzB,EAAOS,IAAc,GAE/C,IAAK,MAAOiB,EAAY3C,KAAUoB,OAAOwB,QAAQF,GAC3CC,EAAWE,SAASJ,IACtBJ,cAAcrE,EAASiD,EAAQS,EAAW1B,EAAMkB,SAAUlB,EAAMmB,mBAGtE,CAEA,SAASQ,aAAa3B,GAGpB,OADAA,EAAQA,EAAMmC,QAAQlD,eAAgB,IAC/BI,aAAaW,IAAUA,CAChC,CAEA,MAAMI,aAAe,CACnB0C,GAAG9E,EAASgC,EAAOD,EAASyB,GAC1BI,WAAW5D,EAASgC,EAAOD,EAASyB,GAAoB,EAC1D,EAEAuB,IAAI/E,EAASgC,EAAOD,EAASyB,GAC3BI,WAAW5D,EAASgC,EAAOD,EAASyB,GAAoB,EAC1D,EAEAnB,IAAIrC,EAASuD,EAAmBxB,EAASyB,GACvC,GAAiC,iBAAtBD,IAAmCvD,EAC5C,OAGF,MAAOyD,EAAaP,EAAUQ,GAAaJ,oBAAoBC,EAAmBxB,EAASyB,GACrFwB,EAActB,IAAcH,EAC5BN,EAASrB,iBAAiB5B,GAC1B0E,EAAoBzB,EAAOS,IAAc,GACzCuB,EAAc1B,EAAkB2B,WAAW,KAEjD,QAAwB,IAAbhC,EAAX,CAUA,GAAI+B,EACF,IAAK,MAAME,KAAgB/B,OAAO3C,KAAKwC,GACrCuB,yBAAyBxE,EAASiD,EAAQkC,EAAc5B,EAAkB6B,MAAM,IAIpF,IAAK,MAAOC,EAAarD,KAAUoB,OAAOwB,QAAQF,GAAoB,CACpE,MAAMC,EAAaU,EAAYlB,QAAQjD,cAAe,IAEjD8D,IAAezB,EAAkBsB,SAASF,IAC7CN,cAAcrE,EAASiD,EAAQS,EAAW1B,EAAMkB,SAAUlB,EAAMmB,mBAEpE,CAdA,KARA,CAEE,IAAKC,OAAO3C,KAAKiE,GAAmBY,OAClC,OAGFjB,cAAcrE,EAASiD,EAAQS,EAAWR,EAAUO,EAAc1B,EAAU,KAE9E,CAeF,EAEAwD,QAAQvF,EAASgC,EAAOwD,GACtB,GAAqB,iBAAVxD,IAAuBhC,EAChC,OAAO,KAGT,MAAMyF,EAAMxD,WAAW,IAAIyD,MAAM1D,EAAO,CAAE2D,SAAS,EAAMC,YAAY,IAASJ,GAE9E,OADAxF,EAAQ6F,cAAcJ,GACfA,CACT,GAGF,SAASxD,WAAW6D,EAAKC,EAAO,IAC9B,IAAK,MAAO9F,EAAKY,KAAUuC,OAAOwB,QAAQmB,GACxC,IACED,EAAI7F,GAAOY,CACb,CAAE,MACAuC,OAAO4C,eAAeF,EAAK7F,EAAK,CAC9BgG,cAAc,EACd5F,IAAGA,IACMQ,GAGb,CAGF,OAAOiF,CACT,CClRA,SAASI,cAAcrF,GACrB,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,GAAIA,IAAUsF,OAAOtF,GAAOuF,WAC1B,OAAOD,OAAOtF,GAGhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,IACE,OAAOwF,KAAKC,MAAMC,mBAAmB1F,GACvC,CAAE,MACA,OAAOA,CACT,CACF,CAEA,SAAS2F,iBAAiBvG,GACxB,OAAOA,EAAIkE,QAAQ,SAAUsC,GAAO,IAAIA,EAAIC,gBAC9C,CAEA,MAAMC,YAAc,CAClBC,iBAAiB5G,EAASC,EAAKY,GAC7Bb,EAAQ6G,aAAa,WAAWL,iBAAiBvG,KAAQY,EAC3D,EAEAiG,oBAAoB9G,EAASC,GAC3BD,EAAQ+G,gBAAgB,WAAWP,iBAAiBvG,KACtD,EAEA+G,kBAAkBhH,GAChB,IAAKA,EACH,MAAO,GAGT,MAAMiH,EAAa,GACbC,EAAS9D,OAAO3C,KAAKT,EAAQmH,SAASC,OAAOnH,GAAOA,EAAIiF,WAAW,QAAUjF,EAAIiF,WAAW,aAElG,IAAK,MAAMjF,KAAOiH,EAAQ,CACxB,IAAIG,EAAUpH,EAAIkE,QAAQ,MAAO,IACjCkD,EAAUA,EAAQC,OAAO,GAAGZ,cAAgBW,EAAQjC,MAAM,GAC1D6B,EAAWI,GAAWnB,cAAclG,EAAQmH,QAAQlH,GACtD,CAEA,OAAOgH,CACT,EAEAM,iBAAgBA,CAACvH,EAASC,IACjBiG,cAAclG,EAAQwH,aAAa,WAAWhB,iBAAiBvG,QC3DpEwH,QAAU,IACVC,wBAA0B,IAC1BC,eAAiB,gBAOjBC,cAAgBnF,IAChBA,GAAYoF,OAAOC,KAAOD,OAAOC,IAAIC,SAEvCtF,EAAWA,EAAS0B,QAAQ,gBAAiB,CAAC6D,EAAOC,IAAO,IAAIH,IAAIC,OAAOE,OAGtExF,GAIHyF,OAASC,GACTA,QACK,GAAGA,IAGL/E,OAAOgF,UAAUhC,SAASpC,KAAKmE,GAAQH,MAAM,eAAe,GAAGtB,cAOlE2B,OAASC,IACb,GACEA,GAAUC,KAAKC,MAjCH,IAiCSD,KAAKE,gBACnBC,SAASC,eAAeL,IAEjC,OAAOA,GAGHM,iCAAmC5I,IACvC,IAAKA,EACH,OAAO,EAIT,IAAI6I,mBAAEA,EAAkBC,gBAAEA,GAAoBjB,OAAOkB,iBAAiB/I,GAEtE,MAAMgJ,EAA0B7C,OAAO8C,WAAWJ,GAC5CK,EAAuB/C,OAAO8C,WAAWH,GAG/C,OAAKE,GAA4BE,GAKjCL,EAAqBA,EAAmBM,MAAM,KAAK,GACnDL,EAAkBA,EAAgBK,MAAM,KAAK,GAxDf,KA0DtBhD,OAAO8C,WAAWJ,GAAsB1C,OAAO8C,WAAWH,KAPzD,GAULM,qBAAuBpJ,IAC3BA,EAAQ6F,cAAc,IAAIH,MAAMiC,kBAG5B0B,UAAYlB,MACXA,GAA4B,iBAAXA,SAIY,IAApBA,EAAOmB,SAGjBC,WAAapB,GACbkB,UAAUlB,GACLA,EAGa,iBAAXA,GAAuBA,EAAO7C,OAAS,EACzCoD,SAASc,cAAc5B,cAAcO,IAGvC,KAGHsB,UAAYzJ,IAChB,IAAKqJ,UAAUrJ,IAAgD,IAApCA,EAAQ0J,iBAAiBpE,OAClD,OAAO,EAGT,MAAMqE,EAAgF,YAA7DZ,iBAAiB/I,GAAS4J,iBAAiB,cAE9DC,EAAgB7J,EAAQ8J,QAAQ,uBAEtC,IAAKD,EACH,OAAOF,EAGT,GAAIE,IAAkB7J,EAAS,CAC7B,MAAM+J,EAAU/J,EAAQ8J,QAAQ,WAChC,GAAIC,GAAWA,EAAQjH,aAAe+G,EACpC,OAAO,EAGT,GAAgB,OAAZE,EACF,OAAO,CAEX,CAEA,OAAOJ,GAGHK,WAAahK,IACZA,GAAWA,EAAQsJ,WAAaW,KAAKC,gBAItClK,EAAQmK,UAAUpG,SAAS,mBAIC,IAArB/D,EAAQoK,SACVpK,EAAQoK,SAGVpK,EAAQqK,aAAa,aAAoD,UAArCrK,EAAQwH,aAAa,aAG5D8C,eAAiBtK,IACrB,IAAK0I,SAAS6B,gBAAgBC,aAC5B,OAAO,KAIT,GAAmC,mBAAxBxK,EAAQyK,YAA4B,CAC7C,MAAMC,EAAO1K,EAAQyK,cACrB,OAAOC,aAAgBC,WAAaD,EAAO,IAC7C,CAEA,OAAI1K,aAAmB2K,WACd3K,EAIJA,EAAQ8C,WAINwH,eAAetK,EAAQ8C,YAHrB,MAML8H,KAAOA,OAUPC,OAAS7K,IACbA,EAAQ8K,cAsBJC,MAAQA,IAAuC,QAAjCrC,SAAS6B,gBAAgBS,IAEvCC,QAAUA,CAACC,EAAkB1F,EAAO,GAAI2F,EAAeD,IACxB,mBAArBA,EAAkCA,EAAiBlH,QAAQwB,GAAQ2F,EAG7EC,uBAAyBA,CAACC,EAAUC,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADAN,QAAQI,GAIV,MACMG,EAAmB5C,iCAAiC0C,GADlC,EAGxB,IAAIG,GAAS,EAEb,MAAM1J,EAAUA,EAAGa,aACbA,IAAW0I,IAIfG,GAAS,EACTH,EAAkBhH,oBAAoBqD,eAAgB5F,GACtDkJ,QAAQI,KAGVC,EAAkBlH,iBAAiBuD,eAAgB5F,GACnD2J,WAAW,KACJD,GACHrC,qBAAqBkC,IAEtBE,IAYCG,qBAAuBA,CAACC,EAAMC,EAAeC,EAAeC,KAChE,MAAMC,EAAaJ,EAAKtG,OACxB,IAAI2G,EAAQL,EAAKM,QAAQL,GAIzB,OAAc,IAAVI,GACMH,GAAiBC,EAAiBH,EAAKI,EAAa,GAAKJ,EAAK,IAGxEK,GAASH,EAAgB,GAAI,EAEzBC,IACFE,GAASA,EAAQD,GAAcA,GAG1BJ,EAAKrD,KAAK4D,IAAI,EAAG5D,KAAK6D,IAAIH,EAAOD,EAAa,OC9OvD,MAAMK,OAEJ,kBAAWC,GACT,MAAO,EACT,CAEA,sBAAWC,GACT,MAAO,EACT,CAEA,eAAWC,GACT,MAAM,IAAIC,MAAM,sEAClB,CAEAC,WAAWC,GAIT,OAHAA,EAAS9J,KAAK+J,gBAAgBD,GAC9BA,EAAS9J,KAAKgK,kBAAkBF,GAChC9J,KAAKiK,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAChB,OAAOA,CACT,CAEAC,gBAAgBD,EAAQ3M,GACtB,MAAM+M,EAAa1D,UAAUrJ,GAAW2G,YAAYY,iBAAiBvH,EAAS,UAAY,GAE1F,MAAO,IACF6C,KAAKmK,YAAYV,WACM,iBAAfS,EAA0BA,EAAa,MAC9C1D,UAAUrJ,GAAW2G,YAAYK,kBAAkBhH,GAAW,MAC5C,iBAAX2M,EAAsBA,EAAS,GAE9C,CAEAG,iBAAiBH,EAAQM,EAAcpK,KAAKmK,YAAYT,aACtD,IAAK,MAAOW,EAAUC,KAAkB/J,OAAOwB,QAAQqI,GAAc,CACnE,MAAMpM,EAAQ8L,EAAOO,GACfE,EAAY/D,UAAUxI,GAAS,UAAYqH,OAAOrH,GAExD,IAAK,IAAIwM,OAAOF,GAAeG,KAAKF,GAClC,MAAM,IAAIG,UACR,GAAG1K,KAAKmK,YAAYR,KAAKgB,0BAA0BN,qBAA4BE,yBAAiCD,MAGtH,CACF,EC7CF,MAAMM,QAAU,eAMhB,MAAMC,sBAAsBrB,OAC1BW,YAAYhN,EAAS2M,GAInB,GAHAgB,UAEA3N,EAAUuJ,WAAWvJ,IAEnB,OAGF6C,KAAK+K,SAAW5N,EAChB6C,KAAKgL,QAAUhL,KAAK6J,WAAWC,GAI/B,MAAMmB,EAAmBhO,KAAKO,IAAIwC,KAAK+K,SAAU/K,KAAKmK,YAAYe,UAC9DD,GACFA,EAAiBE,UAGnBlO,KAAKC,IAAI8C,KAAK+K,SAAU/K,KAAKmK,YAAYe,SAAUlL,KACrD,CAGAmL,UACElO,KAAKgB,OAAO+B,KAAK+K,SAAU/K,KAAKmK,YAAYe,UAC5C3L,aAAaC,IAAIQ,KAAK+K,SAAU/K,KAAKmK,YAAYiB,WAEjD,IAAK,MAAMC,KAAgB9K,OAAO+K,oBAAoBtL,MACpDA,KAAKqL,GAAgB,IAEzB,CAGAE,eAAe/C,EAAUrL,EAASqO,GAAa,GAC7CjD,uBAAuB,KAEhBvI,KAAK+K,UAIVvC,KACCrL,EAASqO,EACd,CAEA3B,WAAWC,GAIT,OAHAA,EAAS9J,KAAK+J,gBAAgBD,EAAQ9J,KAAK+K,UAC3CjB,EAAS9J,KAAKgK,kBAAkBF,GAChC9J,KAAKiK,iBAAiBH,GACfA,CACT,CAGA,kBAAO2B,CAAYtO,GACjB,OAAOF,KAAKO,IAAIkJ,WAAWvJ,GAAU6C,KAAKkL,SAC5C,CAEA,0BAAOQ,CAAoBvO,EAAS2M,EAAS,IAC3C,OAAO9J,KAAKyL,YAAYtO,IAAY,IAAI6C,KAAK7C,EAA2B,iBAAX2M,EAAsBA,EAAS,KAC9F,CAEA,kBAAWc,GACT,OAAOA,OACT,CAEA,mBAAWM,GACT,MAAO,MAAMlL,KAAK2J,MACpB,CAEA,oBAAWyB,GACT,MAAO,IAAIpL,KAAKkL,UAClB,CAEA,gBAAOS,CAAUC,GACf,MAAO,GAAGA,IAAO5L,KAAKoL,WACxB,ECvFF,MAAMS,YAAc1O,IAClB,IAAIyC,EAAWzC,EAAQwH,aAAa,kBAEpC,IAAK/E,GAAyB,MAAbA,EAAkB,CACjC,IAAIkM,EAAgB3O,EAAQwH,aAAa,QAMzC,IAAKmH,IAAmBA,EAAc9J,SAAS,OAAS8J,EAAczJ,WAAW,KAC/E,OAAO,KAILyJ,EAAc9J,SAAS,OAAS8J,EAAczJ,WAAW,OAC3DyJ,EAAgB,IAAIA,EAAcxF,MAAM,KAAK,MAG/C1G,EAAWkM,GAAmC,MAAlBA,EAAwBA,EAAcC,OAAS,IAC7E,CAEA,OAAOnM,EAAWA,EAAS0G,MAAM,KAAK0F,IAAIC,GAAOlH,cAAckH,IAAMC,KAAK,KAAO,MAG7EC,eAAiB,CACrB3L,KAAIA,CAACZ,EAAUzC,EAAU0I,SAAS6B,kBACzB,IAAI0E,QAAQ7G,UAAUzF,iBAAiBqB,KAAKhE,EAASyC,IAG9DyM,QAAOA,CAACzM,EAAUzC,EAAU0I,SAAS6B,kBAC5B0E,QAAQ7G,UAAUoB,cAAcxF,KAAKhE,EAASyC,GAGvD0M,SAAQA,CAACnP,EAASyC,IACT,IAAIzC,EAAQmP,UAAU/H,OAAOgI,GAASA,EAAMC,QAAQ5M,IAG7D6M,QAAQtP,EAASyC,GACf,MAAM6M,EAAU,GAChB,IAAIC,EAAWvP,EAAQ8C,WAAWgH,QAAQrH,GAE1C,KAAO8M,GACLD,EAAQE,KAAKD,GACbA,EAAWA,EAASzM,WAAWgH,QAAQrH,GAGzC,OAAO6M,CACT,EAEAxF,QAAOA,CAAC9J,EAASyC,IACRwM,QAAQ7G,UAAU0B,QAAQ9F,KAAKhE,EAASyC,GAGjDgN,KAAKzP,EAASyC,GACZ,IAAIiN,EAAW1P,EAAQ2P,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASL,QAAQ5M,GACnB,MAAO,CAACiN,GAGVA,EAAWA,EAASC,sBACtB,CAEA,MAAO,EACT,EAGA/O,KAAKZ,EAASyC,GACZ,IAAI7B,EAAOZ,EAAQ4P,mBAEnB,KAAOhP,GAAM,CACX,GAAIA,EAAKyO,QAAQ5M,GACf,MAAO,CAAC7B,GAGVA,EAAOA,EAAKgP,kBACd,CAEA,MAAO,EACT,EAEAC,kBAAkB7P,GAChB,MAAM8P,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAjB,IAAIpM,GAAY,GAAGA,0BAAiCsM,KAAK,KAE3D,OAAOlM,KAAKQ,KAAKyM,EAAY9P,GAASoH,OAAO2I,IAAO/F,WAAW+F,IAAOtG,UAAUsG,GAClF,EAEAC,uBAAuBhQ,GACrB,MAAMyC,EAAWiM,YAAY1O,GAE7B,OAAIyC,GACKuM,eAAeE,QAAQzM,GAAYA,EAGrC,IACT,EAEAwN,uBAAuBjQ,GACrB,MAAMyC,EAAWiM,YAAY1O,GAE7B,OAAOyC,EAAWuM,eAAeE,QAAQzM,GAAY,IACvD,EAEAyN,gCAAgClQ,GAC9B,MAAMyC,EAAWiM,YAAY1O,GAE7B,OAAOyC,EAAWuM,eAAe3L,KAAKZ,GAAY,EACpD,GCpHI0N,qBAAuBA,CAACC,EAAWC,EAAS,UAChD,MAAMC,EAAa,gBAAgBF,EAAUnC,YACvCQ,EAAO2B,EAAU5D,KAEvBpK,aAAa0C,GAAG4D,SAAU4H,EAAY,qBAAqB7B,MAAU,SAAUzM,GAK7E,GAJI,CAAC,IAAK,QAAQ6C,SAAShC,KAAK0N,UAC9BvO,EAAMwO,iBAGJxG,WAAWnH,MACb,OAGF,MAAMD,EAASoM,eAAeiB,uBAAuBpN,OAASA,KAAKiH,QAAQ,IAAI2E,KAC9D2B,EAAU7B,oBAAoB3L,GAGtCyN,IACX,IAGII,oBAAsBA,CAACC,EAAQC,EAASC,EAAgBP,EAAQhF,EAAW,QAC/EwF,YAAY,GAAGF,KAAWD,EAAOlE,OAAQoE,EAAgBE,IACvD,MAAMC,EAAYD,EAAKE,QAAQ5J,OAAO7C,SAASsK,IAAI7O,GAAW0Q,EAAOnC,oBAAoBvO,IACjE,mBAAbqL,GACTA,EAAS,IAAKyF,EAAMC,cAGtB,IAAK,MAAM7Q,KAAY6Q,EACrB7Q,EAASmQ,QAKTQ,YAAcA,CAACF,EAASC,EAAgBvF,KAC5C,MAAM5I,EAAW,GAAGmO,kCACpBxO,aAAa0C,GAAG4D,SAAUiI,EAASlO,EAAU,SAAUT,GACjD,CAAC,IAAK,QAAQ6C,SAAShC,KAAK0N,UAC9BvO,EAAMwO,iBAGR,MAAM/N,EAAWuM,eAAegB,uBAAuBnN,MACjDmO,EAAUvO,EAAWuM,eAAe3L,KAAKZ,GAAY,CAACI,MAE5DwI,EAAS,CAAE2F,UAAShP,SACtB,ICzCIwK,OAAO,QACPuB,WAAW,WACXE,YAAY,YAEZgD,YAAc,iBACdC,aAAe,kBACfC,kBAAkB,OAClBC,kBAAkB,OAMxB,MAAMC,cAAc3D,cAElB,eAAWlB,GACT,OAAOA,MACT,CAGA8E,QAGE,GAFmBlP,aAAamD,QAAQ1C,KAAK+K,SAAUqD,aAExCM,iBACb,OAGF1O,KAAK+K,SAASzD,UAAUrJ,OApBJ,QAsBpB,MAAMuN,EAAaxL,KAAK+K,SAASzD,UAAUpG,SAvBvB,QAwBpBlB,KAAKuL,eAAe,IAAMvL,KAAK2O,kBAAmB3O,KAAK+K,SAAUS,EACnE,CAGAmD,kBACE3O,KAAK+K,SAAS9M,SACdsB,aAAamD,QAAQ1C,KAAK+K,SAAUsD,cACpCrO,KAAKmL,SACP,EAOFmC,qBAAqBkB,MAAO,SC9C5B,MAAM7E,OAAO,SACPuB,WAAW,YACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfC,oBAAoB,SACpBC,uBAAuB,4BACvBC,uBAAuB,QAAQ3D,uBAMrC,MAAM4D,eAAenE,cAEnB,eAAWlB,GACT,OAAOA,MACT,CAGAsF,SAEEjP,KAAK+K,SAAS/G,aAAa,eAAgBhE,KAAK+K,SAASzD,UAAU2H,OAjB7C,UAkBxB,EAOF1P,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB3P,IACpEA,EAAMwO,iBAEN,MAAMuB,EAAS/P,EAAMY,OAAOkH,QAAQ6H,wBACvBE,OAAOtD,oBAAoBwD,GAEnCD,WCjCP,MAAMtF,OAAO,WACPuB,WAAW,cACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfO,iBAAiB,YACjBC,kBAAkB,aAElBC,eAAiB,OACjBC,gBAAkB,QAElBC,YAAc,QAAQnE,cACtBoE,WAAa,OAAOpE,cACpBqE,gBAAgB,UAAUrE,cAC1BsE,mBAAmB,aAAatE,cAChCuE,mBAAmB,aAAavE,cAChCwE,oBAAoB,cAAcxE,cAClCyE,sBAAsB,OAAOzE,uBAC7B2D,uBAAuB,QAAQ3D,uBAE/B0E,oBAAsB,WACtBjB,oBAAoB,SACpBP,kBAAkB,gBAClByB,kBAAoB,kBACpBC,gBAAkB,gBAClBC,iBAAmB,sBACnBC,kBAAoB,SAGpBC,mBAAqB,mBAKrBC,kBAAoB,yBASpBC,gBAAkB,IAOlBC,uBAAyB,IAEzBC,gBAAkB,UAGlBC,cAAgB,uBAAuBP,oBACvCQ,qBAJkB,UAIuBD,cACzCE,iBAAiB,kBACjBC,oBAAsB,uBACtBC,oBAAsB,+BACtBC,oBAAsB,sCACtBC,yBAA2B,yBAC3BC,yBAA2B,yBAC3BC,uBAAyB,4BAEzBC,iBAAmB,CACvBC,CAAC/B,kBAzDqB,QA0DtBgC,CAAC/B,mBA3DoB,QA8DjBgC,UAAY,OACZC,UAAY,OACZC,UAAY,OAEZ7H,UAAU,CACd8H,UAAU,EACVC,KAAMF,UACNG,SAAU,IACVC,UAAU,EACVC,MAAO,SAGHjI,cAAc,CAClB6H,SAAU,UACVC,KAAM,SACNC,SAAU,SACVC,SAAU,UACVC,MAAO,oBAKHC,eAAiBC,GAAaA,EAAW,GAC7C,EAAIA,EAAWA,EAAWA,EAC1B,IAAQ,EAAKA,EAAY,IAAM,EAAK,EAMtC,MAAMC,iBAAiBjH,cACrBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAKf9J,KAAK+R,UAAY5F,eAAeE,QAAQqE,iBAAgB1Q,KAAK+K,WAAa/K,KAAK+K,SAC/E/K,KAAKgS,mBAAqB7F,eAAeE,QAAQsE,oBAAqB3Q,KAAK+K,UAC3E/K,KAAKiS,kBAAoB9F,eAAeE,QAAQuE,oBAAqB5Q,KAAK+K,UAG1E/K,KAAKkS,cAAgB/F,eAAe3L,KAnDP,yBAmDsCR,KAAK+K,UACxE/K,KAAKmS,cAAgBhG,eAAe3L,KAnDP,yBAmDsCR,KAAK+K,UAExE/K,KAAKoS,UAAY,KACjBpS,KAAKqS,UAAY,KAEjBrS,KAAKsS,aAAe,KAGpBtS,KAAKuS,UAAW,EAChBvS,KAAKwS,YAAc,IAAIxV,IAKvBgD,KAAKyS,SAAWzS,KAAKgL,QAAQuG,SAE7BvR,KAAK0S,aAAe1S,KAAK2S,sBAEzB3S,KAAK4S,qBACL5S,KAAK6S,gBACL7S,KAAK8S,sBAED9S,KAAKyS,UACPzS,KAAK+S,QAGP/S,KAAKgT,yBACP,CAGA,kBAAWvJ,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGA5L,OACEiC,KAAKiT,GAAGjT,KAAKkT,YAAc,EAC7B,CAEAC,kBAEmC,YAA7BtN,SAASuN,iBAAiCxM,UAAU5G,KAAK+K,WAC3D/K,KAAKjC,MAET,CAEA6O,OACE5M,KAAKiT,GAAGjT,KAAKkT,YAAc,EAC7B,CAEAvB,QACE3R,KAAKqT,iBAGLrT,KAAK+K,SAASzD,UAAUrJ,OAlJD,mBAmJzB,CAEA8U,QACE/S,KAAKqT,iBACLrT,KAAKsT,oBACLtT,KAAK+K,SAASzD,UAAUiM,IAxJD,mBAyJzB,CAEAN,GAAG7J,GAED,GAAIpJ,KAAKuS,SACP,OAGF,MAAMiB,EAAQxT,KAAKyT,YACbC,EAAWpQ,OAAOqQ,SAASvK,EAAO,IAKxC,GAAIpJ,KAAKgL,QAAQwG,OAASF,YAActR,KAAK4T,yBAA2B5T,KAAK6T,WAAY,CACvF,GAAIH,EAAWF,EAAM/Q,OAAS,EAE5B,YADAzC,KAAK8T,iBAAgB,GAIvB,GAAIJ,EAAW,EAEb,YADA1T,KAAK8T,iBAAgB,EAGzB,CAEA,MAAMC,EAAc/T,KAAKgU,gBAAgBN,EAAUF,EAAM/Q,QAKnDwR,EAAejU,KAAKkT,YAEN,OAAhBa,GAAwBA,IAAgBE,IAIzB1U,aAAamD,QAAQ1C,KAAK+K,SAAUwE,YAAa,CAClEtO,cAAeuS,EAAMO,GACrBG,UAAWlU,KAAKmU,WAAWF,EAAcF,GACzCK,KAAMH,EACNhB,GAAIc,IAGSrF,mBAIX1O,KAAKqU,UACPrU,KAAKsU,QAAQP,GAMf/T,KAAKuU,eAAeR,IACtB,CAEA5I,UAGEnL,KAAKqT,iBAEDrT,KAAKqS,WACPrS,KAAKqS,UAAUmC,aAGS,OAAtBxU,KAAKsS,cACPmC,qBAAqBzU,KAAKsS,cAK5B,IAAK,MAAMoC,KAASvI,eAAe3L,KAAK,IAAIyP,mBAAoBjQ,KAAK+R,WACnE2C,EAAMzW,SAGR+B,KAAK+R,UAAU4C,MAAMC,eAAiB,GAItCrV,aAAaC,IAAIQ,KAAK+R,UAAW3G,aAEjCN,MAAMK,SACR,CAKAnB,kBAAkBF,GAKhB,MAJK,CAACsH,UAAWC,UAAWC,WAAWtP,SAAS8H,EAAO0H,QACrD1H,EAAO0H,KAAO/H,UAAQ+H,MAGjB1H,CACT,CAEA6I,sBACE,MAAMkC,EAAS1I,eAAeE,QAAQoE,qBAAsBzQ,KAAK+K,UAC3D3B,EAAQyL,EAAS7U,KAAKyT,YAAYpK,QAAQwL,GAAU,EAC1D,OAAOnP,KAAK4D,IAAIF,EAAO,EACzB,CAEAwJ,qBACM5S,KAAKgL,QAAQ0G,UACfnS,aAAa0C,GAAGjC,KAAK+K,SAAU0E,gBAAetQ,GAASa,KAAK8U,SAAS3V,IAG5C,UAAvBa,KAAKgL,QAAQ2G,QACfpS,aAAa0C,GAAGjC,KAAK+K,SAAU2E,mBAAkB,IAAM1P,KAAK2R,SAC5DpS,aAAa0C,GAAGjC,KAAK+K,SAAU4E,mBAAkB,IAAM3P,KAAK+U,sBAI9DxV,aAAa0C,GAAGjC,KAAK+R,UAAWnC,oBAAmB,IAAM5P,KAAKgV,wBAChE,CAEAF,SAAS3V,GACP,GAAI,kBAAkBsL,KAAKtL,EAAMY,OAAO2N,SACtC,OAGF,MAAMwG,EAAYjD,iBAAiB9R,EAAM/B,KACrC8W,IACF/U,EAAMwO,iBACN3N,KAAKgV,wBA1Sa,UA2Sdd,EACFlU,KAAK4M,OAEL5M,KAAKjC,OAGX,CAEA8U,gBAEE,IAAI7S,KAAKqU,WAA6C,oBAAzBY,qBAA7B,CAIAjV,KAAKqS,UAAY,IAAI4C,qBACnBlT,GAAW/B,KAAKkV,oBAAoBnT,GACpC,CAAE8F,KAAM7H,KAAK+R,UAAWoD,UAAW,CAAC,EAAG,IAAM,GAAK,IAAM,KAG1D,IAAK,MAAMC,KAAQpV,KAAKyT,YACtBzT,KAAKqS,UAAUgD,QAAQD,EARzB,CAUF,CAEAF,oBAAoBnT,GAGlB,GAAI/B,KAAKuS,SACP,OAGF,IAAK,MAAM+C,KAASvT,EAClB/B,KAAKwS,YAAYtV,IAAIoY,EAAMvV,OAAQuV,EAAMC,eAAiBD,EAAME,kBAAoB,GAGtF,MACMC,EADQzV,KAAKyT,YACEzH,IAAIoJ,GAAQpV,KAAKwS,YAAYhV,IAAI4X,IAAS,GACzDM,EAAWhQ,KAAK4D,OAAOmM,GAS7B,IAAIE,EAAY3V,KAAK0S,aAEjBgD,EAAW,IACbC,EAAYF,EAAOG,UAAUC,GAASA,GAASH,EAnTtB,MAsT3B1V,KAAK8V,WAAWH,GAIhB3V,KAAK+V,oBACP,CAUA7C,YACE,GAAIlT,KAAKqU,WAAcrU,KAAK+R,UAAUiE,YAAchW,KAAK+R,UAAUkE,aAAgB,EACjF,OAAOjW,KAAK0S,aAGd,IAAItJ,EAAQpJ,KAAK0S,aACbwD,EAAgB5S,OAAO6S,kBAE3B,IAAK,MAAOC,EAAWhB,KAASpV,KAAKyT,YAAY1R,UAAW,CAE1D,MAAMsU,EAAQ3Q,KAAK4Q,IAAItW,KAAKuW,aAAanB,IACrCiB,EAAQH,IACVA,EAAgBG,EAChBjN,EAAQgN,EAEZ,CAEA,OAAOhN,CACT,CAEAmL,eAAenL,GACb,MAAMgM,EAAOpV,KAAKyT,YAAYrK,GAC9B,IAAKgM,EACH,OAGF,MAAMoB,EAAOxW,KAAKuW,aAAanB,GAC/B,GAAI1P,KAAK4Q,IAAIE,GAAQ,EACnB,OAQF,MAAMC,EAAazW,KAAK+R,UAAU2E,WAAaF,EAC/CxW,KAAK+R,UAAU4C,MAAMC,eAAiB,OACtC5U,KAAK2W,eAAeF,EAAY,KAC9BzW,KAAK+R,UAAU4C,MAAMC,eAAiB,GAIjC5U,KAAKqS,WACRrS,KAAK8V,WAAW1M,GAMlBpJ,KAAK+V,sBAET,CASAY,eAAeF,EAAYG,GACC,OAAtB5W,KAAKsS,eACPmC,qBAAqBzU,KAAKsS,cAC1BtS,KAAKsS,aAAe,MAGtB,MAAMuE,EAAY7W,KAAK+R,UAAU2E,WAC3BI,EAAWL,EAAaI,EAG9B,GAAI7W,KAAK4T,yBAA4D,oBAA1BmD,sBAGzC,OAFA/W,KAAK+R,UAAUiF,SAAS,CAAER,KAAMC,EAAYQ,SAAU,iBACtDL,IAIF,IAAIM,EAAY,KAChB,MAAMC,EAAOC,IACO,OAAdF,IACFA,EAAYE,GAGd,MAAMvF,EAAWnM,KAAK6D,KAAK6N,EAAMF,GA/Zf,IA+Z6C,GAI/DlX,KAAK+R,UAAUiF,SAAS,CAAER,KAAMK,EAAaC,EAAWlF,eAAeC,GAAYoF,SAAU,YAEzFpF,EAAW,EACb7R,KAAKsS,aAAeyE,sBAAsBI,IAK5CnX,KAAK+R,UAAUiF,SAAS,CAAER,KAAMC,EAAYQ,SAAU,YACtDjX,KAAKsS,aAAe,KACpBsE,MAGF5W,KAAKsS,aAAeyE,sBAAsBI,EAC5C,CAQAZ,aAAapZ,GACX,MAAMka,EAAerX,KAAK+R,UAAUuF,wBAC9BC,EAAOpa,EAAQma,wBAErB,GAAItX,KAAK+K,SAASzD,UAAUpG,SAjdN,mBAkdpB,OAAQqW,EAAKf,KAAQe,EAAKC,MAAQ,GAAOH,EAAab,KAAQa,EAAaG,MAAQ,GAOrF,MAAMC,EAAWnU,OAAO8C,WAAWF,iBAAiBlG,KAAK+R,WAAW2F,2BAA6B,EAEjG,OAAOxP,QACLqP,EAAKI,OAASN,EAAaM,MAAQF,GACnCF,EAAKf,MAAQa,EAAab,KAAOiB,EACrC,CAIA3D,gBAAgB8D,GACd,MAAMpE,EAAQxT,KAAKyT,YACboE,EAAOrE,EAAM/Q,OAAS,EACtBqV,EAAY9X,KAAK0S,aACjBqF,EAAUH,EAAS,EAAIC,EACvB3D,EAAYlU,KAAKgY,eAAeJ,GAStC,GAPmBrY,aAAamD,QAAQ1C,KAAK+K,SAAUwE,YAAa,CAClEtO,cAAeuS,EAAMuE,GACrB7D,YACAE,KAAM0D,EACN7E,GAAI8E,IAGSrJ,iBACb,OAGF1O,KAAKuS,UAAW,EAEhB,MAAMmC,GAASkD,EAASpE,EAAM,GAAKA,EAAMqE,IAAOI,WAAU,GAC1DvD,EAAMpN,UAAUiM,IAAItD,kBACpByE,EAAMpN,UAAUrJ,OA1fM,UA2ftByW,EAAMxQ,gBAAgB,MAGtB,IAAK,MAAMgU,KAAQ/L,eAAe3L,KAAK,OAAQkU,GAC7CwD,EAAKhU,gBAAgB,MAGvBwQ,EAAM1Q,aAAa,cAAe,QAClC0Q,EAAMyD,OAAQ,EAEdnY,KAAK+R,UAAU4C,MAAMC,eAAiB,OAElCgD,EACF5X,KAAK+R,UAAUqG,OAAO1D,IAEtB1U,KAAK+R,UAAUsG,QAAQ3D,GAGvB1U,KAAKsY,YAAYtY,KAAKuW,aAAa/C,EAAMsE,MAG3C9X,KAAK2W,eAAe3W,KAAK+R,UAAU2E,WAAa1W,KAAKuW,aAAa7B,GAAQ,KAIxEA,EAAMzW,SACN+B,KAAKsY,YAAYtY,KAAKuW,aAAa/C,EAAMuE,KAEzC/X,KAAK0S,aAAeqF,EACpB/X,KAAK8S,sBAELvT,aAAamD,QAAQ1C,KAAK+K,SAAUyE,WAAY,CAC9CvO,cAAeuS,EAAMuE,GACrB7D,YACAE,KAAM0D,EACN7E,GAAI8E,IAGN/X,KAAK+R,UAAU4C,MAAMC,eAAiB,GACtC5U,KAAKuS,UAAW,GAEpB,CAEAyF,eAAeJ,GACb,OAAI1P,QACK0P,EApjBW,QADD,OAwjBZA,EAxjBY,OACC,OAwjBtB,CAMAU,YAAYjC,GACVrW,KAAK+R,UAAU4C,MAAMC,eAAiB,OACtC5U,KAAK+R,UAAUwG,SAAS,CAAE/B,KAAMH,EAAOmC,IAAK,EAAGvB,SAAU,WAC3D,CAQA3C,QAAQlL,GACNpJ,KAAK8V,WAAW1M,EAClB,CAEA0M,WAAW1M,GACT,MAAMoK,EAAQxT,KAAKyT,YACnB,GAAIrK,IAAUpJ,KAAK0S,eAAiBc,EAAMpK,GACxC,OAGF,MAAMgL,EAAOpU,KAAK0S,aAElB1S,KAAK0S,aAAetJ,EACpBpJ,KAAK8S,sBAELvT,aAAamD,QAAQ1C,KAAK+K,SAAUyE,WAAY,CAC9CvO,cAAeuS,EAAMpK,GACrB8K,UAAWlU,KAAKmU,WAAWC,EAAMhL,GACjCgL,OACAnB,GAAI7J,GAER,CAEA0J,sBACE,MAAMU,EAAQxT,KAAKyT,YAEnB,IAAK,MAAOrK,EAAOgM,KAAS5B,EAAMzR,UAChCqT,EAAK9N,UAAU2H,OAxlBK,SAwlBqB7F,IAAUpJ,KAAK0S,cAG1D1S,KAAKyY,2BAA2BzY,KAAK0S,cACrC1S,KAAK+V,oBACP,CAEAA,qBAKE,GAAI/V,KAAKgL,QAAQwG,OAASJ,UACxB,OAGF,MAAMsH,EAAW1Y,KAAK+R,UAChB4G,EAAYD,EAAS1C,YAAc0C,EAASzC,YAElD,IAAI2C,EACAC,EAEJ,GAAIF,EAAY,EAAG,CAKjB,MAAM9G,EAAWnM,KAAK4Q,IAAIoC,EAAShC,YACnCkC,EAAU/G,GAAY,EACtBgH,EAAQhH,GAAY8G,EAAY,CAClC,KAAO,CAGL,MAAMd,EAAO7X,KAAKyT,YAAYhR,OAAS,EACvCmW,EAAU5Y,KAAK0S,cAAgB,EAC/BmG,EAAQ7Y,KAAK0S,cAAgBmF,CAC/B,CAEA7X,KAAK8Y,qBAAqB9Y,KAAKkS,cAAe0G,GAC9C5Y,KAAK8Y,qBAAqB9Y,KAAKmS,cAAe0G,EAChD,CAEAC,qBAAqBC,EAAUxR,GAC7B,IAAK,MAAMyR,KAAWD,EAGhBxR,GAAYyR,IAAYnT,SAASmD,iBAClB+P,IAAa/Y,KAAKkS,cAAgBlS,KAAKmS,cAAgBnS,KAAKkS,eACnD,IAAMlS,KAAK+R,WAG5BkH,MAAM,CAAEC,eAAe,IAGlCF,EAAQzR,SAAWA,CAEvB,CAEAkR,2BAA2BrP,GACzB,IAAKpJ,KAAKgS,mBACR,OAGF,MAAM6C,EAAS1I,eAAeE,QAxnBV,UAwnBmCrM,KAAKgS,oBACxD6C,IACFA,EAAOvN,UAAUrJ,OAzpBG,UA0pBpB4W,EAAO3Q,gBAAgB,iBAGzB,MAAMiV,EAAYhN,eAAeE,QAAQ,sBAAsBjD,MAAWpJ,KAAKgS,oBAC3EmH,IACFA,EAAU7R,UAAUiM,IA/pBA,UAgqBpB4F,EAAUnV,aAAa,eAAgB,QAE3C,CAEAgQ,gBAAgB5K,EAAO3G,GACrB,OAAIa,OAAO8V,MAAMhQ,IAAqB,IAAX3G,EAClB,KAGL2G,EAAQ,EACHpJ,KAAKqZ,eAAiB5W,EAAS,EAAI,KAGxC2G,EAAQ3G,EAAS,EACZzC,KAAKqZ,eAAiB,EAAI,KAG5BjQ,CACT,CAIAiQ,eACE,OAAOrZ,KAAKgL,QAAQwG,OAASH,WAAarR,KAAKgL,QAAQwG,OAASF,SAClE,CAKAuC,WACE,GAAI7T,KAAKqU,WAAarU,KAAKyT,YAAYhR,OAAS,EAC9C,OAAO,EAGT,MAAM6W,EAASpT,iBAAiBlG,KAAK+K,UAC/BwO,EAAM3N,GAAQtI,OAAO8C,WAAWkT,EAAOvS,iBAAiB6E,KAAU,EAIxE,OAA6C,KAArC2N,EAAI,wBAA0B,IACA,IAApCA,EAAI,8BACHvZ,KAAK+K,SAASzD,UAAUpG,SAvsBL,qBAwsBnBlB,KAAK+K,SAASzD,UAAUpG,SAvsBP,gBAwsBtB,CAEAiT,WAAWC,EAAMnB,GACf,MAAM2E,EAAS3E,EAAKmB,EACpB,OAAIlM,QACK0P,EA5tBW,QADD,OAguBZA,EAhuBY,OACC,OAguBtB,CAEAtE,kBAAkBlK,EAAQpJ,KAAK0S,cAC7B,MAAMjB,EAAWzR,KAAKwZ,cAAcpQ,GAEpCpJ,KAAK+K,SAAS4J,MAAM8E,YAAYrJ,kBAAmB,GAAGqB,OACtDzR,KAAKoS,UAAYvJ,WAAW,KAK1B,MAAM6Q,EAAW1Z,KAAK2Z,iBACtB3Z,KAAKmT,kBAIY,OAAbuG,EAKJ1Z,KAAKsT,kBAAkBoG,GAJrB1Z,KAAK2R,SAKNF,EACL,CAKAkI,iBACE,OAAO3Z,KAAKgU,gBAAgBhU,KAAKkT,YAAc,EAAGlT,KAAKyT,YAAYhR,OACrE,CAEA+W,cAAcpQ,EAAQpJ,KAAK0S,cACzB,MAAM0C,EAAOpV,KAAKyT,YAAYrK,GACxBqI,EAAW2D,EAAO9R,OAAOqQ,SAASyB,EAAKzQ,aAAa,oBAAqB,IAAMrB,OAAOsW,IAC5F,OAAOtW,OAAO8V,MAAM3H,GAAYzR,KAAKgL,QAAQyG,SAAWA,CAC1D,CAEAsD,oBACO/U,KAAKyS,UAIVzS,KAAK+S,OACP,CAGAiC,wBACEhV,KAAKyS,UAAW,EAChBzS,KAAK2R,QACL3R,KAAKgT,yBACP,CAEA6G,mBACM7Z,KAAKyS,SACPzS,KAAKgV,yBAIPhV,KAAKyS,UAAW,EAChBzS,KAAK+S,QACL/S,KAAKgT,0BACP,CAEAA,0BACE,IAAKhT,KAAKiS,kBACR,OAGFjS,KAAKiS,kBAAkB3K,UAAU2H,OApxBX,UAoxBsCjP,KAAKyS,UAEjE,MAAMqH,EAAQ9Z,KAAKiS,kBAAkBtN,aACnC3E,KAAKyS,SAAW,sBAAwB,sBAGtCqH,GACF9Z,KAAKiS,kBAAkBjO,aAAa,aAAc8V,EAEtD,CAEAzF,UACE,OAAOrU,KAAK+K,SAASzD,UAAUpG,SApyBX,gBAqyBtB,CAEA0S,wBACE,MAAyB,oBAAX5O,QACiB,mBAAtBA,OAAO+U,YACd/U,OAAO+U,WAAW,oCAAoCvN,OAC1D,CAEAiH,YACE,OAAOtH,eAAe3L,KAAKgQ,cAAexQ,KAAK+K,SACjD,CAEAsI,iBACMrT,KAAKoS,YACP4H,aAAaha,KAAKoS,WAClBpS,KAAKoS,UAAY,KAErB,EAOF7S,aAAa0C,GAAG4D,SAAUkJ,uBAAsB8B,oBAAqB,SAAU1R,GAC7E,MAAMY,EAASoM,eAAeiB,uBAAuBpN,MAErD,IAAKD,IAAWA,EAAOuH,UAAUpG,SAl0BP,YAm0BxB,OAGF/B,EAAMwO,iBAEN,MAAMsM,EAAWnI,SAASpG,oBAAoB3L,GAG9Cka,EAASjF,wBAET,MAAMkF,EAAala,KAAK2E,aAAa,oBAEjCuV,EACFD,EAAShH,GAAGiH,GAIsC,SAAhDpW,YAAYY,iBAAiB1E,KAAM,SAKvCia,EAASrN,OAJPqN,EAASlc,MAKb,GAEAwB,aAAa0C,GAAG4D,SAAUkJ,uBAAsB6B,oBAAqB,SAAUzR,GAC7E,MAAMY,EAASoM,eAAeiB,uBAAuBpN,MAEhDD,GAAWA,EAAOuH,UAAUpG,SA/1BP,cAm2B1B/B,EAAMwO,iBAENmE,SAASpG,oBAAoB3L,GAAQ8Z,mBACvC,GAEAta,aAAa0C,GAAG+C,OAAQ6K,sBAAqB,KAC3C,MAAMsK,EAAYhO,eAAe3L,KAAKwQ,wBAEtC,IAAK,MAAMiJ,KAAYE,EACrBrI,SAASpG,oBAAoBuO,KC93BjC,MAAMtQ,OAAO,WACPuB,WAAW,cACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfwL,aAAa,OAAOhP,cACpBiP,cAAc,QAAQjP,cACtBkP,aAAa,OAAOlP,cACpBmP,eAAe,SAASnP,cACxB2D,uBAAuB,QAAQ3D,uBAE/BmD,kBAAkB,OAClBiM,oBAAsB,WACtBC,sBAAwB,aACxBC,qBAAuB,YACvBC,2BAA6B,6BAC7BC,sBAAwB,sBAExBC,MAAQ,QACRC,OAAS,SAETC,iBAAmB,uCACnBjM,uBAAuB,8BAEvBrF,UAAU,CACduR,OAAQ,KACR/L,QAAQ,GAGJvF,cAAc,CAClBsR,OAAQ,iBACR/L,OAAQ,WAOV,MAAMgM,iBAAiBpQ,cACrBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAKkb,kBAAmB,EACxBlb,KAAKmb,cAAgB,GAErB,MAAMC,EAAajP,eAAe3L,KAAKsO,wBAEvC,IAAK,MAAMuM,KAAQD,EAAY,CAC7B,MAAMxb,EAAWuM,eAAegB,uBAAuBkO,GACjDC,EAAgBnP,eAAe3L,KAAKZ,GACvC2E,OAAOgX,GAAgBA,IAAiBvb,KAAK+K,UAE/B,OAAbnL,GAAqB0b,EAAc7Y,QACrCzC,KAAKmb,cAAcxO,KAAK0O,EAE5B,CAEArb,KAAKwb,sBAEAxb,KAAKgL,QAAQgQ,QAChBhb,KAAKyb,0BAA0Bzb,KAAKmb,cAAenb,KAAK0b,YAGtD1b,KAAKgL,QAAQiE,QACfjP,KAAKiP,QAET,CAGA,kBAAWxF,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAsF,SACMjP,KAAK0b,WACP1b,KAAK2b,OAEL3b,KAAK4b,MAET,CAEAA,OACE,GAAI5b,KAAKkb,kBAAoBlb,KAAK0b,WAChC,OAGF,IAAIG,EAAiB,GASrB,GANI7b,KAAKgL,QAAQgQ,SACfa,EAAiB7b,KAAK8b,uBAAuBf,kBAC1CxW,OAAOpH,GAAWA,IAAY6C,KAAK+K,UACnCiB,IAAI7O,GAAW8d,SAASvP,oBAAoBvO,EAAS,CAAE8R,QAAQ,MAGhE4M,EAAepZ,QAAUoZ,EAAe,GAAGX,iBAC7C,OAIF,GADmB3b,aAAamD,QAAQ1C,KAAK+K,SAAUqP,cACxC1L,iBACb,OAGF,IAAK,MAAMqN,KAAkBF,EAC3BE,EAAeJ,OAGjB,MAAMK,EAAYhc,KAAKic,gBAEvBjc,KAAK+K,SAASzD,UAAUrJ,OA3GA,YA4GxB+B,KAAK+K,SAASzD,UAAUiM,IA3GE,cA6G1BvT,KAAK+K,SAAS4J,MAAMqH,GAAa,EAEjChc,KAAKyb,0BAA0Bzb,KAAKmb,eAAe,GACnDnb,KAAKkb,kBAAmB,EAExB,MAYMgB,EAAa,SADUF,EAAU,GAAGrR,cAAgBqR,EAAUzZ,MAAM,KAG1EvC,KAAKuL,eAdY4Q,KACfnc,KAAKkb,kBAAmB,EAExBlb,KAAK+K,SAASzD,UAAUrJ,OArHA,cAsHxB+B,KAAK+K,SAASzD,UAAUiM,IAvHF,WADJ,QA0HlBvT,KAAK+K,SAAS4J,MAAMqH,GAAa,GAEjCzc,aAAamD,QAAQ1C,KAAK+K,SAAUsP,gBAMRra,KAAK+K,UAAU,GAC7C/K,KAAK+K,SAAS4J,MAAMqH,GAAa,GAAGhc,KAAK+K,SAASmR,MACpD,CAEAP,OACE,GAAI3b,KAAKkb,mBAAqBlb,KAAK0b,WACjC,OAIF,GADmBnc,aAAamD,QAAQ1C,KAAK+K,SAAUuP,cACxC5L,iBACb,OAGF,MAAMsN,EAAYhc,KAAKic,gBAEvBjc,KAAK+K,SAAS4J,MAAMqH,GAAa,GAAGhc,KAAK+K,SAASuM,wBAAwB0E,OAE1EhU,OAAOhI,KAAK+K,UAEZ/K,KAAK+K,SAASzD,UAAUiM,IApJE,cAqJ1BvT,KAAK+K,SAASzD,UAAUrJ,OAtJA,WADJ,QAyJpB,IAAK,MAAMyE,KAAW1C,KAAKmb,cAAe,CACxC,MAAMhe,EAAUgP,eAAeiB,uBAAuB1K,GAElDvF,IAAY6C,KAAK0b,SAASve,IAC5B6C,KAAKyb,0BAA0B,CAAC/Y,IAAU,EAE9C,CAEA1C,KAAKkb,kBAAmB,EASxBlb,KAAK+K,SAAS4J,MAAMqH,GAAa,GAEjChc,KAAKuL,eATY4Q,KACfnc,KAAKkb,kBAAmB,EACxBlb,KAAK+K,SAASzD,UAAUrJ,OAnKA,cAoKxB+B,KAAK+K,SAASzD,UAAUiM,IArKF,YAsKtBhU,aAAamD,QAAQ1C,KAAK+K,SAAUwP,iBAKRva,KAAK+K,UAAU,EAC/C,CAGA2Q,SAASve,EAAU6C,KAAK+K,UACtB,OAAO5N,EAAQmK,UAAUpG,SAjLL,OAkLtB,CAEA8I,kBAAkBF,GAGhB,OAFAA,EAAOmF,OAASvN,QAAQoI,EAAOmF,QAC/BnF,EAAOkR,OAAStU,WAAWoD,EAAOkR,QAC3BlR,CACT,CAEAmS,gBACE,OAAOjc,KAAK+K,SAASzD,UAAUpG,SAtLL,uBAsLuC2Z,MAAQC,MAC3E,CAEAU,sBACE,IAAKxb,KAAKgL,QAAQgQ,OAChB,OAGF,MAAM1O,EAAWtM,KAAK8b,uBAAuBhN,wBAE7C,IAAK,MAAM3R,KAAWmP,EAAU,CAC9B,MAAM8P,EAAWjQ,eAAeiB,uBAAuBjQ,GAEnDif,GACFpc,KAAKyb,0BAA0B,CAACte,GAAU6C,KAAK0b,SAASU,GAE5D,CACF,CAEAN,uBAAuBlc,GACrB,MAAM0M,EAAWH,eAAe3L,KAAKma,2BAA4B3a,KAAKgL,QAAQgQ,QAE9E,OAAO7O,eAAe3L,KAAKZ,EAAUI,KAAKgL,QAAQgQ,QAAQzW,OAAOpH,IAAYmP,EAAStK,SAAS7E,GACjG,CAEAse,0BAA0BY,EAAcC,GACtC,GAAKD,EAAa5Z,OAIlB,IAAK,MAAMtF,KAAWkf,EACpBlf,EAAQmK,UAAU2H,OAvNK,aAuNyBqN,GAChDnf,EAAQ6G,aAAa,gBAAiBsY,EAE1C,EAOF/c,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB,SAAU3P,IAEjD,MAAzBA,EAAMY,OAAO2N,SAAoBvO,EAAME,gBAAmD,MAAjCF,EAAME,eAAeqO,UAChFvO,EAAMwO,iBAGR,IAAK,MAAMxQ,KAAWgP,eAAekB,gCAAgCrN,MACnEib,SAASvP,oBAAoBvO,EAAS,CAAE8R,QAAQ,IAASA,QAE7D,GC/PO,MAAMsN,YAAc,CACzBC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,KACJ,MAAO,MAwBIC,yBAA2BA,CAACC,EAAiBC,EAAmB,YAE3E,IAAKD,IAAoBA,EAAgB7a,SAAS,KAChD,OAAO,KAIT,MAAM+a,EAAQF,EAAgBvW,MAAM,OAC9B0W,EAAa,CAAEC,GAAIH,GAEzB,IAAK,MAAMI,KAAQH,EACjB,GAAIG,EAAKlb,SAAS,KAAM,CAEtB,MAAOmb,EAAYC,GAAaF,EAAK5W,MAAM,UACX+W,IAA5Bd,YAAYY,KACdH,EAAWG,GAAcC,EAE7B,MAEEJ,EAAWC,GAAKC,EAIpB,OAAOF,GAUIM,uBAAyBA,CAACC,EAAsBT,EAAmB,YAC9E,IAAKS,EACH,OAAOT,EAIT,MAAMU,EAAgBxY,OAAOyY,WAG7B,IAAIC,EAAkBH,EAAqBN,IAAMH,EAGjD,MAAMa,EAAkB,CAAC,KAAM,KAAM,KAAM,KAAM,OAEjD,IAAK,MAAMR,KAAcQ,EAEnBH,GADajB,YAAYY,IACII,EAAqBJ,KACpDO,EAAkBH,EAAqBJ,IAI3C,OAAOO,GASIE,0BAA4BpV,IACvC,MAAMqV,EAAY,GAElB,IAAK,MAAMV,KAAc5c,OAAO3C,KAAK2e,aAAc,CACjD,MAAMuB,EAAWvB,YAAYY,GACvBY,EAAM/Y,OAAO+U,WAAW,eAAe+D,QAE7CC,EAAIxc,iBAAiB,SAAUiH,GAC/BqV,EAAUlR,KAAK,CAAEoR,MAAK7e,QAASsJ,GACjC,CAEA,OAAOqV,GAQIG,2BAA6BH,IACxC,IAAK,MAAME,IAAEA,EAAG7e,QAAEA,KAAa2e,EAC7BE,EAAItc,oBAAoB,SAAUvC,ICtFhCyK,OAAO,OACPuB,WAAW,UACXE,YAAY,WACZwD,eAAe,YAEfqP,aAAa,SACbC,UAAU,MACVC,eAAe,UACfC,iBAAiB,YACjBjP,iBAAiB,YACjBC,kBAAkB,aAClBiP,WAAW,OACXC,UAAU,MACVC,YAAY,QACZC,YAAY,IACZC,mBAAqB,EAErBC,oBAAsB,IAEtBpE,aAAa,eACbC,eAAe,iBACfH,aAAa,eACbC,cAAc,gBACdtL,uBAAuB,yBACvB4P,uBAAyB,2BACzBC,qBAAuB,yBAEvBrQ,kBAAkB,OAElBO,uBAAuB,wDAEvB+P,gBAAgB,QAChBC,iBAAmB,WACnBC,wBAA0B,wBAC1BC,oBAAsB,cACtBC,yBAAyB,2CAEzBC,kBAAoB,eACpBC,kBAAoB,YAEpBC,wBAA0BhC,GAC1BlV,QACKkV,EAAU9b,QAAQ,gBAAiB,SAASA,QAAQ,cAAe,QAGrE8b,EAAU9b,QAAQ,gBAAiB,QAAQA,QAAQ,cAAe,SAGrE+d,aAAeA,CAACC,EAAIC,EAAIC,KAC1BF,EAAGG,EAAID,EAAGC,IAAMF,EAAGG,EAAIF,EAAGE,IAAQH,EAAGE,EAAID,EAAGC,IAAMH,EAAGI,EAAIF,EAAGE,GAE1DjW,UAAU,CACdkW,WAAW,EACXC,SAAU,kBACVC,WAAW,EACXC,QAAS,UACTC,OAAQ,CAAC,EAAG,GACZC,eAAgB,KAChBC,KAAM,KACN7C,UAtBwB,eAuBxB8C,UAAW,SACXC,SAAU,WACVC,eAAgB,OAChBC,aA9C0B,KAiDtB3W,cAAc,CAClBiW,UAAW,mBACXC,SAAU,mBACVC,UAAW,2BACXC,QAAS,SACTC,OAAQ,0BACRC,eAAgB,yBAChBC,KAAM,iBACN7C,UAAW,SACX8C,UAAW,0BACXC,SAAU,SACVC,eAAgB,SAChBC,aAAc,UAOhB,MAAMC,aAAazV,cACjB0V,sBAAwB,IAAI3hB,IAE5BuL,YAAYhN,EAAS2M,GACnB,QAA+B,IAApB0W,gBACT,MAAM,IAAI9V,UAAU,mEAGtBI,MAAM3N,EAAS2M,GAEf9J,KAAKygB,iBAAmB,KACxBzgB,KAAK0gB,qBAAuB,GAC5B1gB,KAAK2gB,sBAAwB,KAC7B3gB,KAAK4gB,QAAU5gB,KAAK+K,SAAS9K,WAC7BD,KAAK6gB,cAAgB,IAAI7jB,IACzBgD,KAAK8gB,sBAAwB,IAAI9jB,IACjCgD,KAAK+gB,iBAAmB,KAExB/gB,KAAKghB,MAAQhhB,KAAKgL,QAAQiV,MAAQjgB,KAAKihB,aAMlCjhB,KAAKgL,QAAQiV,MAAQjgB,KAAKghB,QAC7BhhB,KAAK4gB,QAAU5gB,KAAKkhB,aAAalhB,KAAKghB,QAGxChhB,KAAKmhB,WAAanhB,KAAK4gB,QAAQtZ,WAAWpG,SAAS,WAEnDlB,KAAKohB,oBAAsBphB,KAAKghB,OAAO/gB,WAEvCD,KAAKqhB,6BACLrhB,KAAKshB,wBACP,CAGA,kBAAW7X,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,MAnIS,MAoIX,CAGAsF,SACE,OAAOjP,KAAK0b,WAAa1b,KAAK2b,OAAS3b,KAAK4b,MAC9C,CAEAA,OACE,GAAIzU,WAAWnH,KAAK+K,WAAa/K,KAAK0b,WACpC,OAGF,MAAMza,EAAgB,CACpBA,cAAejB,KAAK+K,UAKtB,IAFkBxL,aAAamD,QAAQ1C,KAAK+K,SAAUqP,aAAYnZ,GAEpDyN,iBAAd,CAOA,GAHA1O,KAAKuhB,uBACLvhB,KAAKwhB,kBAED,iBAAkB3b,SAAS6B,kBAAoB1H,KAAK4gB,QAAQ3Z,QA3HxC,eA4HtB,IAAK,MAAM9J,KAAW0I,SAAS4b,KAAKnV,SAClC/M,aAAa0C,GAAG9E,EAAS,YAAa4K,MAI1C/H,KAAK+K,SAASkO,MAAM,CAAEyI,cAAc,IACpC1hB,KAAK+K,SAAS/G,aAAa,gBAAiB,QAE5ChE,KAAKghB,MAAM1Z,UAAUiM,IA3ID,QA4IpBvT,KAAK+K,SAASzD,UAAUiM,IA5IJ,QA8IhBvT,KAAK4gB,SACP5gB,KAAK4gB,QAAQtZ,UAAUiM,IA/IL,QAkJpB+M,KAAKqB,eAAepO,IAAIvT,MACxBT,aAAamD,QAAQ1C,KAAK+K,SAAUsP,cAAapZ,EAtBjD,CAuBF,CAEA0a,OACE,GAAIxU,WAAWnH,KAAK+K,YAAc/K,KAAK0b,WACrC,OAGF,MAAMza,EAAgB,CACpBA,cAAejB,KAAK+K,UAGtB/K,KAAK4hB,cAAc3gB,EACrB,CAEAkK,UACEnL,KAAK6hB,mBACL7hB,KAAK8hB,+BACL9hB,KAAK+hB,8BACL/hB,KAAKgiB,oBACLhiB,KAAKiiB,2BACL3B,KAAKqB,eAAezjB,OAAO8B,MAC3B8K,MAAMK,SACR,CAEA+W,SACMliB,KAAKygB,kBACPzgB,KAAKmiB,yBAET,CAGAlB,YAGE,MAAMmB,EAAUjW,eAAelF,QAAQjH,KAAK+K,SAAU,eACtD,OAAOoB,eAAepO,KAAKiC,KAAK+K,SAnLd,SAmLuC,IACvDoB,eAAeS,KAAK5M,KAAK+K,SApLT,SAoLkC,IAClDoB,eAAeE,QArLC,QAqLsB+V,GAAWpiB,KAAK4gB,QAC1D,CAEAM,aAAajB,GACX,IAAImC,EAAUpiB,KAAK+K,SAAS9K,WAC5B,KAAOmiB,aAAmBhW,UAAYgW,EAAQlhB,SAAS+e,IACrDmC,EAAUA,EAAQniB,WAGpB,OAAOmiB,aAAmBhW,QAAUgW,EAAUpiB,KAAK+K,SAAS9K,UAC9D,CAEA2hB,cAAc3gB,GAEZ,IADkB1B,aAAamD,QAAQ1C,KAAK+K,SAAUuP,aAAYrZ,GACpDyN,iBAAd,CAMA,GAFA1O,KAAKgiB,oBAED,iBAAkBnc,SAAS6B,gBAC7B,IAAK,MAAMvK,KAAW0I,SAAS4b,KAAKnV,SAClC/M,aAAaC,IAAIrC,EAAS,YAAa4K,MAI3C/H,KAAK6hB,mBACL7hB,KAAK8hB,+BAEL9hB,KAAKghB,MAAM1Z,UAAUrJ,OAtND,QAuNpB+B,KAAK+K,SAASzD,UAAUrJ,OAvNJ,QAyNhB+B,KAAK4gB,SACP5gB,KAAK4gB,QAAQtZ,UAAUrJ,OA1NL,QA6NpB+B,KAAK+K,SAAS/G,aAAa,gBAAiB,SAC5CF,YAAYG,oBAAoBjE,KAAKghB,MAAO,aAC5Cld,YAAYG,oBAAoBjE,KAAKghB,MAAO,WAC5CV,KAAKqB,eAAezjB,OAAO8B,MAC3BT,aAAamD,QAAQ1C,KAAK+K,SAAUwP,eAActZ,EAxBlD,CAyBF,CAEA4I,WAAWC,GAGT,GAAgC,iBAFhCA,EAASgB,MAAMjB,WAAWC,IAERoW,YAA2B1Z,UAAUsD,EAAOoW,YACV,mBAA3CpW,EAAOoW,UAAU5I,sBAExB,MAAM,IAAI5M,UAAU,GArQb,OAqQqBC,+GAG9B,OAAOb,CACT,CAEA0X,kBACE,GAA6B,WAAzBxhB,KAAKgL,QAAQ8U,QAEf,YADAhc,YAAYC,iBAAiB/D,KAAKghB,MAAO,UAAW,UAItD,IAAIqB,EAAmBriB,KAAK+K,SAEG,WAA3B/K,KAAKgL,QAAQkV,UACfmC,EAAmBriB,KAAK4gB,QACfpa,UAAUxG,KAAKgL,QAAQkV,WAChCmC,EAAmB3b,WAAW1G,KAAKgL,QAAQkV,WACA,iBAA3BlgB,KAAKgL,QAAQkV,YAC7BmC,EAAmBriB,KAAKgL,QAAQkV,WAGlClgB,KAAKmiB,wBAAwBE,GAE7BriB,KAAKygB,iBAAmB6B,WACtBD,EACAriB,KAAKghB,MACL,IAAMhhB,KAAKmiB,wBAAwBE,GAEvC,CAEA,6BAAMF,CAAwBE,EAAmB,MAC/C,IAAKriB,KAAKghB,MACR,OAGGqB,IAEDA,EAD6B,WAA3BriB,KAAKgL,QAAQkV,UACIlgB,KAAK4gB,QACfpa,UAAUxG,KAAKgL,QAAQkV,WACbxZ,WAAW1G,KAAKgL,QAAQkV,WACA,iBAA3BlgB,KAAKgL,QAAQkV,UACVlgB,KAAKgL,QAAQkV,UAEblgB,KAAK+K,UAI5B,MAAMqS,EAAYpd,KAAKuiB,gBACjBC,EAAaxiB,KAAKyiB,yBAClBzC,EAAiBhgB,KAAK0iB,mBAAmBtF,EAAWoF,SAEpDxiB,KAAK2iB,uBACTN,EACAriB,KAAKghB,MACLhB,EAAe5C,UACf4C,EAAewC,WACfxC,EAAeG,SAEnB,CAEAzE,WACE,OAAO1b,KAAKghB,MAAM1Z,UAAUpG,SAxSR,OAyStB,CAEAqhB,gBACE,MAAMnF,EAAYpd,KAAK2gB,sBACrBrD,uBAAuBtd,KAAK2gB,sBAnSR,gBAoSpB3gB,KAAKgL,QAAQoS,UAEf,OAAOgC,wBAAwBhC,EACjC,CAEAiE,6BACErhB,KAAK2gB,sBAAwB/D,yBAAyB5c,KAAKgL,QAAQoS,UA1S7C,gBA4SlBpd,KAAK2gB,uBACP3gB,KAAK4iB,2BAET,CAEAA,4BACE5iB,KAAK+hB,8BACL/hB,KAAK0gB,qBAAuB9C,0BAA0B,KAChD5d,KAAK0b,YACP1b,KAAKmiB,2BAGX,CAEAJ,8BACE/D,2BAA2Bhe,KAAK0gB,sBAChC1gB,KAAK0gB,qBAAuB,EAC9B,CAEAmC,aACE,MAAQ9C,OAAQ+C,GAAiB9iB,KAAKgL,QAEtC,MAA4B,iBAAjB8X,EACFA,EAAaxc,MAAM,KAAK0F,IAAIhO,GAASsF,OAAOqQ,SAAS3V,EAAO,KAGzC,mBAAjB8kB,EACF,EAAG1F,YAAW2F,WACJD,EAAa,CAAE1F,YAAW8C,UAAW6C,EAAM7C,UAAW8C,SAAUD,EAAMC,UAAYhjB,KAAK+K,UAKnG+X,CACT,CAEAL,yBACE,MAAMQ,EAAcjjB,KAAK6iB,aAgBzB,MAdmB,CACjB9C,OACyB,mBAAhBkD,EACLA,EACA,CAAEC,SAAUD,EAAY,IAAM,EAAGE,UAAWF,EAAY,IAAM,IAElEG,KAAK,CACHC,mBAAoBrjB,KAAKsjB,2BAE3BC,MAAM,CACJ3D,SAAoC,oBAA1B5f,KAAKgL,QAAQ4U,SAAiC,oBAAsB5f,KAAKgL,QAAQ4U,WAKjG,CAEA0D,yBAkBE,MAfoB,CAClBE,OAAQ,CAAC,MAAO,eAAgB,aAAc,YAAa,WAC3D,eAAgB,CAAC,YAAa,aAAc,WAC5C,aAAc,CAAC,UAAW,eAAgB,aAC1ChL,IAAK,CAAC,SAAU,YAAa,UAAW,eAAgB,cACxD,YAAa,CAAC,eAAgB,UAAW,cACzC,UAAW,CAAC,aAAc,YAAa,gBACvCb,MAAO,CAAC,OAAQ,cAAe,YAAa,aAAc,YAC1D,cAAe,CAAC,aAAc,YAAa,WAAY,YAAa,gBACpE,YAAa,CAAC,WAAY,cAAe,aAAc,UAAW,cAClEnB,KAAM,CAAC,QAAS,aAAc,WAAY,cAAe,aACzD,aAAc,CAAC,cAAe,WAAY,YAAa,YAAa,gBACpE,WAAY,CAAC,YAAa,aAAc,cAAe,UAAW,eAdlDxW,KAAKuiB,kBAiBU,CAAC,MAAO,SAAU,QAAS,OAC9D,CAEAG,mBAAmBtF,EAAWoF,GAC5B,MAAMiB,EAAgB,CACpBrG,YACAoF,aACArC,SAAUngB,KAAKgL,QAAQmV,UAGzB,MAAO,IACFsD,KACArb,QAAQpI,KAAKgL,QAAQgV,eAAgB,MAAC3C,EAAWoG,IAExD,CAEA5B,mBACM7hB,KAAKygB,mBACPzgB,KAAKygB,mBACLzgB,KAAKygB,iBAAmB,KAE5B,CAEAiD,gBACE,MAAM7D,UAAEA,GAAc7f,KAAKgL,QAC3B,OAAkB,IAAd6U,EACK,MAGY,IAAdA,EAAqBha,SAAS4b,KAAO/a,WAAWmZ,EACzD,CAEA0B,uBACE,MAAM1B,EAAY7f,KAAK0jB,gBAClB7D,GAAc7f,KAAKghB,OAIpBhhB,KAAKghB,MAAM/gB,aAAe4f,GAC5BA,EAAUzH,OAAOpY,KAAKghB,MAE1B,CAEAc,+BACO9hB,KAAKohB,qBAAwBphB,KAAKghB,OAInChhB,KAAKghB,MAAM/gB,aAAeD,KAAKohB,qBACjCphB,KAAKohB,oBAAoBhJ,OAAOpY,KAAKghB,MAEzC,CAEA,4BAAM2B,CAAuBzC,EAAW8C,EAAU5F,EAAWoF,EAAYrC,EAAW,YAClF,IAAK6C,EAASW,YACZ,OAAO,KAGT,MAAMlE,EAAEA,EAACC,EAAEA,EAAGtC,UAAWwG,SAAyBpD,gBAChDN,EACA8C,EACA,CAAE5F,YAAWoF,aAAYrC,aAG3B,OAAK6C,EAASW,aAIdpjB,OAAOsjB,OAAOb,EAASrO,MAAO,CAC5BmP,SAAU3D,EACV3J,KAAM,GAAGiJ,MACTjH,IAAK,GAAGkH,MACRqE,OAAQ,MAGVjgB,YAAYC,iBAAiBif,EAAU,YAAaY,GAC7CA,GAXE,IAYX,CAMAtC,yBACsC,UAAhCthB,KAAKgL,QAAQoV,gBAA8D,SAAhCpgB,KAAKgL,QAAQoV,iBAC1D7gB,aAAa0C,GAAGjC,KAAKghB,MAAO,aA/cF,wBA+cyC7hB,IACjEa,KAAKgkB,uBAAuB7kB,KAG9BI,aAAa0C,GAAGjC,KAAKghB,MAAO,aApdT,WAodyC7hB,IAC1Da,KAAKikB,gBAAgB9kB,KAGvBI,aAAa0C,GAAGjC,KAAKghB,MAAO,YAAa7hB,IACvCa,KAAKkkB,oBAAoB/kB,MAIO,UAAhCa,KAAKgL,QAAQoV,gBAA8D,SAAhCpgB,KAAKgL,QAAQoV,gBAC1D7gB,aAAa0C,GAAGjC,KAAKghB,MAAO,QA7dF,wBA6doC7hB,IAC5Da,KAAKmkB,uBAAuBhlB,IAGlC,CAEA6kB,uBAAuB7kB,GACrB,MAAMuD,EAAUvD,EAAMY,OAAOkH,QApeD,yBAqe5B,IAAKvE,EACH,OAGF,MAAM0hB,EAAiB1hB,EAAQuE,QA1eV,YA2efod,EAAUlY,eAAeE,QA5eb,QA4eoC+X,GACjDC,IAILrkB,KAAKskB,2BAA2BD,GAChCrkB,KAAKukB,sBAAsBH,GAC3BpkB,KAAKwkB,aAAa9hB,EAAS2hB,EAASD,GACtC,CAEAH,gBAAgB9kB,GACd,MAAMilB,EAAiBjlB,EAAMY,OAAOkH,QAtff,YAuffod,EAAUlY,eAAeE,QAxfb,QAwfoC+X,GACjDC,GAAYrkB,KAAK6gB,cAAcvjB,IAAI+mB,KAIpCrkB,KAAKykB,uBAAuBtlB,EAAOklB,IAIvCrkB,KAAK0kB,sBAAsBL,EAASD,GACtC,CAEAD,uBAAuBhlB,GACrB,MAAMuD,EAAUvD,EAAMY,OAAOkH,QAngBD,yBAogB5B,IAAKvE,EACH,OAGFvD,EAAMwO,iBACNxO,EAAMwlB,kBAEN,MAAMP,EAAiB1hB,EAAQuE,QA5gBV,YA6gBfod,EAAUlY,eAAeE,QA9gBb,QA8gBoC+X,GACjDC,IAIDrkB,KAAK6gB,cAAcvjB,IAAI+mB,GACzBrkB,KAAK4kB,cAAcP,EAASD,IAE5BpkB,KAAKukB,sBAAsBH,GAC3BpkB,KAAKwkB,aAAa9hB,EAAS2hB,EAASD,IAExC,CAEAI,aAAa9hB,EAAS2hB,EAASD,GAC7B,GAAIpkB,KAAK6gB,cAAcvjB,IAAI+mB,GACzB,OAGF3hB,EAAQsB,aAAa,gBAAiB,QACtCtB,EAAQsB,aAAa,gBAAiB,QAMtCqgB,EAAQ1P,MAAMkQ,QAAU,IACxBR,EAAQ/c,UAAUiM,IA5iBE,QA6iBpB6Q,EAAe9c,UAAUiM,IA7iBL,QA+iBpB,MAAMuR,EAAU9kB,KAAK+kB,uBAAuBriB,EAAS2hB,EAASD,GAC9DpkB,KAAK6gB,cAAc3jB,IAAImnB,EAASS,GAEhCvlB,aAAa0C,GAAGoiB,EAAS,aAAc,KACrCrkB,KAAKskB,2BAA2BD,IAEpC,CAEAO,cAAcP,EAASD,GACrB,IAAKpkB,KAAK6gB,cAAcvjB,IAAI+mB,GAC1B,OAGF,MAAMW,EAAiB7Y,eAAe3L,KAAK,sBAA2D6jB,GACtG,IAAK,MAAMY,KAAUD,EAAgB,CACnC,MAAME,EAAgBD,EAAOhe,QAzjBV,YA0jBnBjH,KAAK4kB,cAAcK,EAAQC,EAC7B,CAEA,MAAMxiB,EAAUyJ,eAAeE,QA5jBH,wBA4jBoC+X,GAE1DU,EAAU9kB,KAAK6gB,cAAcrjB,IAAI6mB,GACnCS,GACFA,IAGF9kB,KAAK6gB,cAAc3iB,OAAOmmB,GAC1B9kB,aAAaC,IAAI6kB,EAAS,cAEtB3hB,GACFA,EAAQsB,aAAa,gBAAiB,SAGxCqgB,EAAQ/c,UAAUrJ,OAhlBE,QAilBpBmmB,EAAe9c,UAAUrJ,OAjlBL,QAwlBpBomB,EAAQ1P,MAAMkQ,QAAU,EAC1B,CAEA7C,oBACE,IAAK,MAAOqC,KAAYrkB,KAAK6gB,cAAe,CAC1C,MAAMuD,EAAiBC,EAAQpd,QAxlBZ,YAylBnBjH,KAAK4kB,cAAcP,EAASD,EAC9B,CACF,CAEAG,sBAAsBY,GACpB,MAAMnK,EAASmK,EAAsBllB,WAC/BmlB,EAAkBjZ,eAAe3L,KAAK,wBAA6Dwa,GAEzG,IAAK,MAAMqK,KAAeD,EAAiB,CACzC,MAAME,EAAiBD,EAAYpe,QAlmBhB,YAmmBfqe,IAAmBH,GACrBnlB,KAAK4kB,cAAcS,EAAaC,EAEpC,CACF,CAEAP,uBAAuBriB,EAAS2hB,EAASD,GACvC,MAAM/B,EAAmB+B,EACnBhH,EAAYgC,wBArmBI,aAsmBhBoD,EAAa,CACjBzC,OAAO,CAAEmD,SAAU,EAAGC,WAAW,IACjCC,KAAK,CACHC,mBAAoB,CAClBjE,wBAAwB,eACxBA,wBAAwB,WACxBA,wBAAwB,gBAG5BmE,MAAM,CAAEgC,QAAS,KAGbC,EAAiBA,IAAMxlB,KAAK2iB,uBAAuBN,EAAkBgC,EAASjH,EAAWoF,GAC5FiD,KAAK7B,IAGJS,EAAQ1P,MAAMkQ,QAAU,GACjBjB,IAIX,OADA4B,IACOlD,WAAWD,EAAkBgC,EAASmB,EAC/C,CAEAd,sBAAsBL,EAASD,GAC7BpkB,KAAKskB,2BAA2BD,GAEhC,MAAMqB,EAAY7c,WAAW,KAC3B7I,KAAK4kB,cAAcP,EAASD,GAC5BpkB,KAAK8gB,sBAAsB5iB,OAAOmmB,IACjCrkB,KAAKgL,QAAQqV,cAEhBrgB,KAAK8gB,sBAAsB5jB,IAAImnB,EAASqB,EAC1C,CAEApB,2BAA2BD,GACzB,MAAMqB,EAAY1lB,KAAK8gB,sBAAsBtjB,IAAI6mB,GAC7CqB,IACF1L,aAAa0L,GACb1lB,KAAK8gB,sBAAsB5iB,OAAOmmB,GAEtC,CAEApC,2BACE,IAAK,MAAMyD,KAAa1lB,KAAK8gB,sBAAsBhjB,SACjDkc,aAAa0L,GAGf1lB,KAAK8gB,sBAAsB6E,OAC7B,CAMAzB,oBAAoB/kB,GAClBa,KAAK+gB,iBAAmB,CACtBtB,EAAGtgB,EAAMymB,QACTlG,EAAGvgB,EAAM0mB,QACTC,UAAWC,KAAK3O,MAEpB,CAEAqN,uBAAuBtlB,EAAOklB,GAC5B,IAAKrkB,KAAK+gB,iBACR,OAAO,EAGT,MAAMiF,EAAc3B,EAAQ/M,wBACtB2O,EAAa,CAAExG,EAAGtgB,EAAMymB,QAASlG,EAAGvgB,EAAM0mB,SAC1CK,EAAU,CAAEzG,EAAGzf,KAAK+gB,iBAAiBtB,EAAGC,EAAG1f,KAAK+gB,iBAAiBrB,GAGjEyG,EADQje,QACU8d,EAAYrO,MAAQqO,EAAYxP,KAClD4P,EAAY,CAAE3G,EAAG0G,EAASzG,EAAGsG,EAAYxN,KACzC6N,EAAe,CAAE5G,EAAG0G,EAASzG,EAAGsG,EAAYxC,QAElD,OAAOxjB,KAAKsmB,iBAAiBL,EAAYC,EAASE,EAAWC,EAC/D,CAEAC,iBAAiBC,EAAOC,EAAIC,EAAIC,GAC9B,MAAMC,EAAKtH,aAAakH,EAAOC,EAAIC,GAC7BG,EAAKvH,aAAakH,EAAOE,EAAIC,GAC7BG,EAAKxH,aAAakH,EAAOG,EAAIF,GAKnC,SAHgBG,EAAK,GAAOC,EAAK,GAAOC,EAAK,KAC7BF,EAAK,GAAOC,EAAK,GAAOC,EAAK,GAG/C,CAMAC,iBAAgB1pB,IAAEA,EAAG2C,OAAEA,IACrB,MAAMgnB,EAAchnB,EAAOkH,QA7sBT,UA6sBmCjH,KAAKghB,MACpDxN,EAAQrH,eAAe3L,KAAK,YAAYye,2BAA0B8H,GACrExiB,OAAOpH,GAAWyJ,UAAUzJ,IAE1BqW,EAAM/Q,QAIXqG,qBAAqB0K,EAAOzT,EAAQ3C,IAAQghB,kBAAiB5K,EAAMxR,SAASjC,IAASkZ,OACvF,CAEA+N,sBAAsB7nB,GACpB,MAAM/B,IAAEA,EAAG2C,OAAEA,GAAWZ,EAClB8nB,EAAQ/e,QAERgf,EAAWD,EAAQ9X,iBAAiBC,kBACpC+X,EAAUF,EAAQ7X,kBAAkBD,iBAEpCiV,EAAiBrkB,EAAOkH,QA9tBT,YA+tBfmgB,EAAmBhD,GAAkBrkB,EAAOyM,QA9tBtB,yBAguB5B,IAAKpP,IAAQmhB,aAAanhB,IAAQohB,cAAc4I,EAAkB,CAChEjoB,EAAMwO,iBACNxO,EAAMwlB,kBAEN,MAAMN,EAAUlY,eAAeE,QAtuBf,QAsuBsC+X,GAYtD,OAXIC,IACFrkB,KAAKukB,sBAAsBH,GAC3BpkB,KAAKwkB,aAAazkB,EAAQskB,EAASD,GACnCrN,sBAAsB,KACpB,MAAMsQ,EAAYlb,eAAeE,QAAQ4S,yBAAwBoF,GAC7DgD,GACFA,EAAUpO,YAKT,CACT,CAEA,GAAI7b,IAAQ8pB,GAAYE,EAAkB,CACxCjoB,EAAMwO,iBACNxO,EAAMwlB,kBAEN,MAAMN,EAAUlY,eAAeE,QAzvBf,QAyvBsC+X,GAYtD,OAXIC,IACFrkB,KAAKukB,sBAAsBH,GAC3BpkB,KAAKwkB,aAAazkB,EAAQskB,EAASD,GACnCrN,sBAAsB,KACpB,MAAMsQ,EAAYlb,eAAeE,QAAQ4S,yBAAwBoF,GAC7DgD,GACFA,EAAUpO,YAKT,CACT,CAEA,GAAI7b,IAAQ+pB,EAAS,CACnB,MAAMJ,EAAchnB,EAAOkH,QAzwBX,SA0wBVqgB,EAAuBP,GAAa9f,QAzwBvB,YA2wBnB,GAAIqgB,EAAsB,CACxBnoB,EAAMwO,iBACNxO,EAAMwlB,kBAEN,MAAM4C,EAAgBpb,eAAeE,QA9wBb,wBA8wB8Cib,GAMtE,OALAtnB,KAAK4kB,cAAcmC,EAAaO,GAC5BC,GACFA,EAActO,SAGT,CACT,CACF,CAEA,GAAI7b,IAAQihB,YAAYjhB,IAAQkhB,UAAS,CACvCnf,EAAMwO,iBACNxO,EAAMwlB,kBAEN,MAAMoC,EAAchnB,EAAOkH,QA9xBX,SA+xBVuM,EAAQrH,eAAe3L,KAAK,YAAYye,2BAA0B8H,GACrExiB,OAAOpH,GAAWyJ,UAAUzJ,IAO/B,OALIqW,EAAM/Q,SACWrF,IAAQihB,WAAW7K,EAAM,GAAKA,EAAMgU,IAAG,IAC/CvO,SAGN,CACT,CAEA,OAAO,CACT,CAEA,iBAAOwO,CAAWtoB,GAChB,GA9zBuB,IA8zBnBA,EAAM+P,SAAiD,UAAf/P,EAAMM,MAv0BtC,QAu0B0DN,EAAM/B,KAI5E,IAAK,MAAMC,KAAYijB,KAAKqB,eAAgB,CAC1C,IAAmC,IAA/BtkB,EAAS2N,QAAQ2U,UACnB,SAGF,MAAM+H,EAAevoB,EAAMuoB,eACrBC,EAAeD,EAAa1lB,SAAS3E,EAAS2jB,OACpD,GACE0G,EAAa1lB,SAAS3E,EAAS0N,WACC,WAA/B1N,EAAS2N,QAAQ2U,YAA2BgI,GACb,YAA/BtqB,EAAS2N,QAAQ2U,WAA2BgI,EAE7C,SAGF,GAAItqB,EAAS2jB,MAAM9f,SAAS/B,EAAMY,UAA4B,UAAfZ,EAAMM,MA11B3C,QA01B+DN,EAAM/B,KAAoB,qCAAqCqN,KAAKtL,EAAMY,OAAO2N,UACxJ,SAGF,MAAMzM,EAAgB,CAAEA,cAAe5D,EAAS0N,UAE7B,UAAf5L,EAAMM,OACRwB,EAAcwM,WAAatO,GAG7B9B,EAASukB,cAAc3gB,EACzB,CACF,CAEA,4BAAO2mB,CAAsBzoB,GAC3B,MAAM0oB,EAAU,kBAAkBpd,KAAKtL,EAAMY,OAAO2N,SAC9Coa,EA32BS,WA22BO3oB,EAAM/B,IACtB2qB,EAAkB,CAAC5J,eAAcC,kBAAgBpc,SAAS7C,EAAM/B,KAChE4qB,EAAqB,CAAC7Y,iBAAgBC,mBAAiBpN,SAAS7C,EAAM/B,KACtE6qB,EAAmB,CAAC5J,WAAUC,WAAStc,SAAS7C,EAAM/B,KACtD8qB,EAAsB,CAAC3J,YAAWC,aAAWxc,SAAS7C,EAAM/B,KAE5DgqB,EAAmBjoB,EAAMY,OAAOyM,QAr1BV,yBAu1B5B,KAAKub,GAAoBD,GAAkBE,GAAuBC,GAC5DC,GAAuBd,GAC3B,OAGF,GAAIS,IAAYC,EACd,OAGF,MAAMK,EAAkBnoB,KAAKwM,QAAQsC,wBACnC9O,KACCmM,eAAeS,KAAK5M,KAAM8O,wBAAsB,IAC/C3C,eAAepO,KAAKiC,KAAM8O,wBAAsB,IAChD3C,eAAeE,QAAQyC,uBAAsB3P,EAAME,eAAeY,YAEtE,IAAKkoB,EACH,OAGF,MAAM9qB,EAAWijB,KAAK5U,oBAAoByc,GAE1C,KAAKH,GAAsBC,GAAqBC,GAAuBd,KAAsB/pB,EAAS2pB,sBAAsB7nB,GAA5H,CAIA,GAAI4oB,EAKF,OAJA5oB,EAAMwO,iBACNxO,EAAMwlB,kBACNtnB,EAASue,YACTve,EAASypB,gBAAgB3nB,GAI3B,GAAI2oB,GAAiBzqB,EAASqe,WAAY,CACxCvc,EAAMwO,iBACNxO,EAAMwlB,kBAEN,MAAMoC,EAAc5nB,EAAMY,OAAOkH,QA93BjB,SA+3BVqgB,EAAuBP,GAAa9f,QA93BvB,YAg4BnB,GAAIqgB,GAAwBjqB,EAASwjB,cAAcpjB,KAAO,EAAG,CAC3D,MAAM8pB,EAAgBpb,eAAeE,QAh4Bb,wBAg4B8Cib,GAMtE,OALAjqB,EAASunB,cAAcmC,EAAaO,QAChCC,GACFA,EAActO,QAIlB,CAEA5b,EAASse,OACTwM,EAAgBlP,OAClB,CA7BA,CA8BF,EAOF1Z,aAAa0C,GAAG4D,SAAU8Y,uBAAwB7P,uBAAsBwR,KAAKsH,uBAC7EroB,aAAa0C,GAAG4D,SAAU8Y,uBAt5BJ,QAs5B2C2B,KAAKsH,uBACtEroB,aAAa0C,GAAG4D,SAAUkJ,uBAAsBuR,KAAKmH,YACrDloB,aAAa0C,GAAG4D,SAAU+Y,qBAAsB0B,KAAKmH,YACrDloB,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB,SAAU3P,GAC9EA,EAAMwO,iBACN2S,KAAK5U,oBAAoB1L,MAAMiP,QACjC,GCj9BA,MAAMtF,OAAO,WACPuB,WAAW,cACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfqP,aAAa,SACbC,QAAU,MACVC,eAAe,UACfC,iBAAiB,YACjBC,WAAW,OACXC,UAAU,MACVC,UAAY,QACZC,UAAY,IAEZ4J,eAAe,SAAShd,cACxBgP,aAAa,OAAOhP,cACpBiP,cAAc,QAAQjP,cACtBkP,aAAa,OAAOlP,cACpBmP,eAAe,SAASnP,cACxB2D,uBAAuB,QAAQ3D,uBAE/BmD,kBAAkB,OAClB8Z,oBAAsB,WACtBC,uBAAyB,uBAEzBxZ,uBAAuB,8BACvB+P,gBAAgB,QAChB0J,mBAAqB,4BACrBtJ,uBAAyB,0DACzBuJ,eAAiB,kBACjBC,sBAAwB,yBACxBC,oBAAsB,uBAEtBjf,UAAU,CACdmW,SAAU,kBACV+I,UAAU,EACV/c,KAAM,KACNmU,OAAQ,CAAC,EAAG,GACZ6I,YAAa,GACbxL,UAAW,eACXyL,QAAQ,EACRC,iBAAiB,GAGbpf,cAAc,CAClBkW,SAAU,mBACV+I,SAAU,UACV/c,KAAM,gBACNmU,OAAQ,0BACR6I,YAAa,SACbxL,UAAW,SACXyL,OAAQ,UACRC,gBAAiB,WAOnB,MAAMC,iBAAiBle,cACrBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAKgpB,QAAUhpB,KAAK+K,SACpB/K,KAAKghB,MAAQ7U,eAAepO,KAAKiC,KAAKgpB,QAtCpB,SAsC4C,GAC9DhpB,KAAKipB,cAAgB9c,eAAeE,QAAQmc,eAAgBxoB,KAAKgpB,SACjEhpB,KAAKkpB,aAAe/c,eAAeE,QAAQoc,sBAAuBzoB,KAAKghB,OACvEhhB,KAAKmpB,WAAahd,eAAeE,QAAQqc,oBAAqB1oB,KAAKghB,OACnEhhB,KAAKopB,aAAe,KACpBppB,KAAKqpB,cAAgB,KAErBrpB,KAAKspB,qBACLtpB,KAAKupB,sBACLvpB,KAAKwpB,wBACLxpB,KAAK4S,oBACP,CAGA,kBAAWnJ,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAsF,SACE,OAAOjP,KAAK0b,WAAa1b,KAAK2b,OAAS3b,KAAK4b,MAC9C,CAEAA,OACMzU,WAAWnH,KAAKgpB,UAAYhpB,KAAK0b,YAInBnc,aAAamD,QAAQ1C,KAAKgpB,QAAS5O,cACvC1L,mBAId1O,KAAKqpB,cAAczN,OAEf5b,KAAKkpB,eACPlpB,KAAKkpB,aAAalrB,MAAQ,GAC1BgC,KAAKypB,aAAa,IAClB1S,sBAAsB,IAAM/W,KAAKkpB,aAAajQ,UAGhD1Z,aAAamD,QAAQ1C,KAAKgpB,QAAS3O,eACrC,CAEAsB,OACO3b,KAAK0b,aAIQnc,aAAamD,QAAQ1C,KAAKgpB,QAAS1O,cACvC5L,mBAId1O,KAAKqpB,cAAc1N,OACnBpc,aAAamD,QAAQ1C,KAAKgpB,QAASzO,iBACrC,CAEApP,UACMnL,KAAKqpB,gBACPrpB,KAAKqpB,cAAcle,UACnBnL,KAAKqpB,cAAgB,MAGnBrpB,KAAKopB,eACPppB,KAAKopB,aAAanrB,SAClB+B,KAAKopB,aAAe,MAGtB7pB,aAAaC,IAAIQ,KAAKghB,MAAO5V,aAC7B7L,aAAaC,IAAIQ,KAAKgpB,QAAS5d,aAE/BN,MAAMK,SACR,CAGAuQ,WACE,OAAO1b,KAAKghB,MAAM1Z,UAAUpG,SAhIR,OAiItB,CAEAooB,qBACE,MAAM1d,KAAEA,GAAS5L,KAAKgL,QACjBY,IAIL5L,KAAKopB,aAAevjB,SAAS6jB,cAAc,SAC3C1pB,KAAKopB,aAAa3pB,KAAO,SACzBO,KAAKopB,aAAaxd,KAAOA,EACzB5L,KAAKopB,aAAaprB,MAAQ,GAC1BgC,KAAKgpB,QAAQ/oB,WAAW0pB,aAAa3pB,KAAKopB,aAAcppB,KAAKgpB,SAC/D,CAEAO,sBACEvpB,KAAKqpB,cAAgB,IAAI/I,KAAKtgB,KAAKgpB,QAAS,CAC1C/I,KAAMjgB,KAAKghB,MACXrB,WAAW3f,KAAKgL,QAAQ2d,UAAW,UACnC/I,SAAU5f,KAAKgL,QAAQ4U,SACvBG,OAAQ/f,KAAKgL,QAAQ+U,OACrB3C,UAAWpd,KAAKgL,QAAQoS,WAE5B,CAEAoM,wBACwBxpB,KAAK4pB,oBACTnnB,OAAS,GACzBzC,KAAK6pB,oBACL7pB,KAAK8pB,sBAEL9pB,KAAK+pB,kBAET,CAEAnX,qBACErT,aAAa0C,GAAGjC,KAAKghB,MAAO,QAASuH,mBAAoBppB,IACvD,MAAMiW,EAAOjW,EAAMY,OAAOkH,QAAQshB,oBAC7BnT,IAAQjO,WAAWiO,KAIxBjW,EAAMwO,iBACNxO,EAAMwlB,kBACN3kB,KAAKgqB,YAAY5U,MAGnB7V,aAAa0C,GAAGjC,KAAKgpB,QAAS,UAAW7pB,IACvCa,KAAKiqB,qBAAqB9qB,KAG5BI,aAAa0C,GAAGjC,KAAKghB,MAAO,UAAW7hB,IACrCa,KAAKkqB,mBAAmB/qB,KAGtBa,KAAKkpB,eACP3pB,aAAa0C,GAAGjC,KAAKkpB,aAAc,QAAS,KAC1ClpB,KAAKypB,aAAazpB,KAAKkpB,aAAalrB,SAGtCuB,aAAa0C,GAAGjC,KAAKkpB,aAAc,UAAW/pB,IAC5C,GA3Me,cA2MXA,EAAM/B,IAAwB,CAChC+B,EAAMwO,iBACN,MAAM6F,EAAQxT,KAAKmqB,mBACf3W,EAAM/Q,OAAS,GACjB+Q,EAAM,GAAGyF,OAEb,CApNW,WAsNP9Z,EAAM/B,MACR4C,KAAK2b,OACL3b,KAAKgpB,QAAQ/P,WAIrB,CAEA+Q,YAAY5U,GACV,GAAIpV,KAAKgL,QAAQ2d,SACfvT,EAAK9N,UAAU2H,OA/MO,YAgNtBmG,EAAKpR,aAAa,gBAAiBoR,EAAK9N,UAAUpG,SAhN5B,iBAiNjB,CACL,MAAMkpB,EAAqBje,eAAe3L,KAAK,YAA2BR,KAAKghB,OAC/E,IAAK,MAAMpU,KAAQwd,EACjBxd,EAAKtF,UAAUrJ,OApNK,YAqNpB2O,EAAK5I,aAAa,gBAAiB,SAGrCoR,EAAK9N,UAAUiM,IAxNO,YAyNtB6B,EAAKpR,aAAa,gBAAiB,OACrC,CAEAhE,KAAK6pB,oBACL7pB,KAAK8pB,qBAEL,MAAM9rB,EAAQgC,KAAKgL,QAAQ2d,SACzB3oB,KAAK4pB,oBAAoB5d,IAAIkB,GAAMA,EAAG5I,QAAQ+lB,SAC9CjV,EAAK9Q,QAAQ+lB,QAEf9qB,aAAamD,QAAQ1C,KAAKgpB,QAASZ,eAAc,CAC/CpqB,QACAoX,SAGGpV,KAAKgL,QAAQ2d,WAChB3oB,KAAK2b,OACL3b,KAAKgpB,QAAQ/P,QAEjB,CAEA4Q,oBACE,MAAMS,EAAgBtqB,KAAK4pB,oBAE3B,GAA6B,IAAzBU,EAAc7nB,OAOlB,GAFAzC,KAAKipB,cAAc3hB,UAAUrJ,OArPF,wBAuPvB+B,KAAKgL,QAAQ2d,UAAY2B,EAAc7nB,OAAS,EAClDzC,KAAKipB,cAAcsB,YAAc,GAAGD,EAAc7nB,sBAC7C,CACL,MAAM2S,EAAOkV,EAAc,GACrBxQ,EAAQ3N,eAAeE,QAAQ,wCAAyC+I,GAC9EpV,KAAKipB,cAAcsB,YAAczQ,EAAQA,EAAMyQ,YAAcnV,EAAKmV,YAAYxe,MAChF,MAZE/L,KAAK+pB,kBAaT,CAEAA,mBACE,MAAMnB,YAAEA,GAAgB5oB,KAAKgL,QACzB4d,IACF5oB,KAAKipB,cAAcsB,YAAc3B,EACjC5oB,KAAKipB,cAAc3hB,UAAUiM,IApQJ,wBAsQ7B,CAEAuW,qBACE,IAAK9pB,KAAKopB,aACR,OAGF,MACMtrB,EADgBkC,KAAK4pB,oBACE5d,IAAIkB,GAAMA,EAAG5I,QAAQ+lB,SAClDrqB,KAAKopB,aAAaprB,MAAQgC,KAAKgL,QAAQ2d,SAAW7qB,EAAOoO,KAAK,KAAQpO,EAAO,IAAM,EACrF,CAEA8rB,oBACE,OAAOzd,eAAe3L,KAAK,YAA2BR,KAAKghB,MAC7D,CAEAmJ,mBACE,OAAOhe,eAAe3L,KAAKye,uBAAwBjf,KAAKghB,OACrDzc,OAAO6Q,GAAQxO,UAAUwO,GAC9B,CAEAqU,aAAae,GACX,MAAMC,EAAkBzqB,KAAK0qB,eAAeF,EAAM3mB,cAAckI,QAC1DyH,EAAQrH,eAAe3L,KAAK+nB,mBAAoBvoB,KAAKghB,OAC3D,IAAI2J,EAAe,EAEnB,IAAK,MAAMvV,KAAQ5B,EAAO,CACxB,MAAMoX,EAAO5qB,KAAK0qB,eAAetV,EAAKmV,YAAY1mB,cAAckI,QAC1DS,GAAWie,GAAmBG,EAAK5oB,SAASyoB,GAClDrV,EAAKT,MAAMmL,QAAUtT,EAAU,GAAK,OAChCA,GACFme,GAEJ,CAEI3qB,KAAKmpB,YACPnpB,KAAKmpB,WAAW7hB,UAAU2H,OAAO,SAAU0b,EAAe,EAE9D,CAEAD,eAAeE,GACb,OAAI5qB,KAAKgL,QAAQ8d,gBACR8B,EAAKC,UAAU,OAAOvpB,QAAQ,mBAAoB,IAGpDspB,CACT,CAEAX,qBAAqB9qB,GACnB,MAAM/B,IAAEA,GAAQ+B,EAEhB,GAxUmB,cAwUf/B,GAzUa,YAyUaA,EAAsB,CAClD+B,EAAMwO,iBACD3N,KAAK0b,YACR1b,KAAK4b,OAGP,MAAMpI,EAAQxT,KAAKmqB,mBAMnB,YALI3W,EAAM/Q,OAAS,IA/UF,cAgVArF,EAAyBoW,EAAM,GAAKA,EAAMgU,IAAG,IACrDvO,QAIX,CAlVc,UAoVT7b,GAnVS,MAmVYA,GAAuB4C,KAAK0b,aACpDvc,EAAMwO,iBACN3N,KAAK4b,OAET,CAEAsO,mBAAmB/qB,GACjB,MAAM/B,IAAEA,EAAG2C,OAAEA,GAAWZ,EAExB,GAnWe,WAmWX/B,EAKF,OAJA+B,EAAMwO,iBACNxO,EAAMwlB,kBACN3kB,KAAK2b,YACL3b,KAAKgpB,QAAQ/P,QAIf,GA1WY,QA0WR7b,EAEF,YADA4C,KAAK2b,OAIP,MAAMkM,EAAU9nB,EAAOyM,QAAQ,SAE/B,GA/WmB,cA+WfpP,GAhXa,YAgXaA,EAAsB,CAClD+B,EAAMwO,iBACN,MAAM6F,EAAQxT,KAAKmqB,mBAKnB,YAJI3W,EAAM/Q,OAAS,GACjBqG,qBAAqB0K,EAAOzT,EAnXb,cAmXqB3C,GAAyBoW,EAAMxR,SAASjC,IAASkZ,QAIzF,CAEA,GAxXa,SAwXT7b,GAvXQ,QAuXYA,EAAiB,CACvC+B,EAAMwO,iBACN,MAAM6F,EAAQxT,KAAKmqB,mBAMnB,YALI3W,EAAM/Q,OAAS,IA3XR,SA4XUrF,EAAmBoW,EAAM,GAAKA,EAAMgU,IAAG,IAC/CvO,QAIf,CAEA,IAjYc,UAiYT7b,GAhYS,MAgYYA,KAAuByqB,EAAS,CACxD1oB,EAAMwO,iBACN,MAAMyH,EAAOrV,EAAOkH,QAAQshB,oBACxBnT,IAASjO,WAAWiO,IACtBpV,KAAKgqB,YAAY5U,EAErB,CACF,CAGA,sBAAO0V,CAAgBhhB,GACrB,OAAO9J,KAAK+qB,KAAK,WACf,MAAM9c,EAAO8a,SAASrd,oBAAoB1L,KAAM8J,GAEhD,GAAsB,iBAAXA,EAAX,CAIA,QAA4B,IAAjBmE,EAAKnE,GACd,MAAM,IAAIY,UAAU,oBAAoBZ,MAG1CmE,EAAKnE,IANL,CAOF,EACF,EAOFvK,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB,SAAU3P,GAC9EA,EAAMwO,iBACNob,SAASrd,oBAAoB1L,MAAMiP,QACrC,GAEA1P,aAAa0C,GAAG4D,SAAU,mBAAoB,KAC5C,IAAK,MAAMoJ,KAAU9C,eAAe3L,KAAKsO,wBACvCia,SAASrd,oBAAoBuD,KCnbjC,MAAMtF,OAAO,aACPuB,WAAW,gBACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfwZ,eAAe,SAAShd,cACxBgP,aAAa,OAAOhP,cACpBiP,cAAc,QAAQjP,cACtBkP,aAAa,OAAOlP,cACpBmP,eAAe,SAASnP,cACxB2D,uBAAuB,QAAQ3D,uBAC/B4f,uBAAyB,UAAU5f,uBAEnC0D,uBAAuB,gCAEvBmc,WAAa,IAEbxhB,UAAU,CACdyhB,gBAAiB,KACjBC,QAAS,KACTC,QAAS,KACTC,WAAY,KACZC,eAAgB,KAChBC,mBAAoB,EACpBC,aAAc,EACdC,QAAQ,EACRC,OAAQ,UACRC,gBAAiB,KACjBC,cAAe,GACfC,cAAe,SACfzO,UAAW,OACX0O,WAAY,IAGRpiB,cAAc,CAClBwhB,gBAAiB,gBACjBC,QAAS,8BACTC,QAAS,8BACTC,WAAY,yBACZC,eAAgB,gCAChBC,mBAAoB,SACpBC,aAAc,SACdC,OAAQ,UACRC,OAAQ,SACRC,gBAAiB,wBACjBC,cAAe,QACfC,cAAe,SACfzO,UAAW,SACX0O,WAAY,UAOd,MAAMC,mBAAmBlhB,cACvBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAKgsB,UAAY,KACjBhsB,KAAK0b,UAAW,EAEhB1b,KAAKisB,eACP,CAGA,kBAAWxiB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAsF,SACE,IAAIjP,KAAKgL,QAAQygB,OAIjB,OAAOzrB,KAAK0b,SAAW1b,KAAK2b,OAAS3b,KAAK4b,MAC5C,CAEAA,OACM5b,KAAKgL,QAAQygB,SAIZzrB,KAAKgsB,WAAa7kB,WAAWnH,KAAK+K,WAAa/K,KAAK0b,UAIvCnc,aAAamD,QAAQ1C,KAAK+K,SAAUqP,cACxC1L,mBAId1O,KAAKgsB,UAAUpQ,OACf5b,KAAK0b,UAAW,EAEhBnc,aAAamD,QAAQ1C,KAAK+K,SAAUsP,eACtC,CAEAsB,OACM3b,KAAKgL,QAAQygB,QAIZzrB,KAAKgsB,WAAchsB,KAAK0b,WAIXnc,aAAamD,QAAQ1C,KAAK+K,SAAUuP,cACxC5L,mBAId1O,KAAKgsB,UAAUrQ,OACf3b,KAAK0b,UAAW,EAEhBnc,aAAamD,QAAQ1C,KAAK+K,SAAUwP,iBACtC,CAEApP,UACMnL,KAAKksB,iBACPlsB,KAAKksB,eAAe1X,aACpBxU,KAAKksB,eAAiB,MAGpBlsB,KAAKgsB,WACPhsB,KAAKgsB,UAAUG,UAGjBnsB,KAAKgsB,UAAY,KACjBlhB,MAAMK,SACR,CAEAihB,mBACE,MAAMC,EAAQrsB,KAAKgsB,WAAWM,SAASV,cACvC,OAAOS,EAAQ,IAAIA,GAAS,EAC9B,CAEAE,iBAAiBF,GACXrsB,KAAKgsB,WACPhsB,KAAKgsB,UAAU9uB,IAAI,CAAE0uB,cAAeS,GAExC,CAGAJ,gBACEjsB,KAAKwsB,SAAqC,UAA1BxsB,KAAK+K,SAAS2C,QAC9B1N,KAAKysB,UAAYzsB,KAAKgL,QAAQygB,OAG1BzrB,KAAKysB,YAAczsB,KAAKwsB,WAC1BxsB,KAAK0sB,YAAc1sB,KAAK+K,SAASpE,cAAc,sCAGjD3G,KAAK2sB,iBAAmB3sB,KAAK4sB,0BAC7B5sB,KAAK6sB,gBAAkB7sB,KAAK8sB,yBAE5B,MAAMC,EAAkB/sB,KAAKgtB,wBAI7BhtB,KAAKgsB,UAAY,IAAIiB,SAASjtB,KAAK2sB,iBAAkBI,GACrD/sB,KAAKgsB,UAAUkB,OAGfltB,KAAKmtB,sBAGDntB,KAAKwsB,UAAYxsB,KAAK+K,SAAS/M,OACjCgC,KAAKotB,mBAIPptB,KAAKqtB,iCACP,CAEAA,kCACE,MAAMzB,cAAEA,GAAkB5rB,KAAKgL,QAC/B,IAAK4gB,GAA0C,IAAzBA,EAAcnpB,OAClC,OAGF,MAAM6qB,EAAgBttB,KAAKutB,oBAAoB3B,GAE3C5rB,KAAKwsB,WACPxsB,KAAK+K,SAAS/M,MAAQsvB,GAGpBttB,KAAK0sB,cACP1sB,KAAK0sB,YAAY1uB,MAAQ4tB,EAAc1f,KAAK,MAG1ClM,KAAK6sB,kBACP7sB,KAAK6sB,gBAAgBtC,YAAc+C,EAEvC,CAEAV,0BACE,IAAIjB,gBAAEA,GAAoB3rB,KAAKgL,QAO/B,GAL+B,iBAApB2gB,IACTA,EAAkB9lB,SAASc,cAAcglB,KAItCA,GAAmB3rB,KAAKwsB,WAAaxsB,KAAKysB,UAAW,CACxD,MAAMzR,EAAShb,KAAK+K,SAAS9D,QAAQ,eACjC+T,IACF2Q,EAAkB3Q,EAEtB,CAEA,OAAO2Q,GAAmB3rB,KAAK+K,QACjC,CAEA+hB,yBACE,MAAMxB,eAAEA,GAAmBtrB,KAAKgL,QAEhC,MAA8B,iBAAnBsgB,EACFzlB,SAASc,cAAc2kB,IAIT,IAAnBA,GAA+C,OAAnBA,IAA4BtrB,KAAKwsB,WAAaxsB,KAAKysB,UAC5DzsB,KAAK+K,SAASpE,cAAc,iCAC1B3G,KAAK+K,SAGvBugB,CACT,CAEAkC,oBACE,OAAOxtB,KAAK+K,SAAS9D,QAAQ,kBAC/B,CAEAwmB,qBAEE,MAAMvC,gBAAEA,GAAoBlrB,KAAKgL,QACjC,GAAIkgB,EACF,OAAOA,EAGT,MAAMxe,EAAW1M,KAAKwtB,oBACtB,OAAO9gB,GAAU/H,aAAa,kBAAoB,IACpD,CAEA+oB,oBAAoBvwB,GAClB,IAAKA,EACH,OAGF,MAAMwwB,EAAQ3tB,KAAKytB,qBAEfE,EAEFxwB,EAAQ6G,aAAa,gBAAiB2pB,GAGtCxwB,EAAQ+G,gBAAgB,gBAE5B,CAEAipB,sBAEE,MAAMzgB,EAAW1M,KAAKwtB,oBACjB9gB,IAAY1M,KAAKgL,QAAQkgB,kBAK9BlrB,KAAKksB,eAAiB,IAAI0B,iBAAiB,KACzC5tB,KAAK0tB,oBAAoB1tB,KAAKgsB,WAAWM,SAASuB,eAGpD7tB,KAAKksB,eAAe7W,QAAQ3I,EAAU,CACpCtI,YAAY,EACZ0pB,gBAAiB,CAAC,mBAEtB,CAEAd,wBAEE,MAAMW,EAAQ3tB,KAAKytB,qBAEbM,EAAYJ,GAAmB,SAAVA,EAA8BA,EAAX,SAExCZ,EAAkB,IACnB/sB,KAAKgL,QAAQ8gB,WAChBkC,WAAYhuB,KAAKysB,UACjBwB,gBAAiBjuB,KAAKgL,QAAQoS,UAC9BoO,aAAcxrB,KAAKgL,QAAQwgB,aAC3BE,OAAQ1rB,KAAKgL,QAAQ0gB,OACrBwC,mBAAoBluB,KAAKgL,QAAQ6gB,cACjCD,cAAe5rB,KAAKgL,QAAQ4gB,cAC5BL,mBAAoBvrB,KAAKgL,QAAQugB,mBACjC9rB,KAAMO,KAAKgL,QAAQugB,mBAAqB,EAAI,WAAa,UACzD4C,cAAeJ,EACfK,gBAAiB,kBACjBC,YAAaA,CAACC,EAAMnvB,IAAUa,KAAKuuB,iBAAiBD,EAAMnvB,GAC1DqvB,OAAQF,IACNtuB,KAAK0tB,oBAAoBY,EAAKhC,QAAQuB,cAExCY,OAAQA,KACNzuB,KAAK0b,UAAW,EAChB1b,KAAK0tB,oBAAoB1tB,KAAKgsB,UAAUM,QAAQuB,cAElDa,OAAQA,KACN1uB,KAAK0b,UAAW,IAKpB,GAAI1b,KAAKgL,QAAQ4gB,cAAcnpB,OAAS,EAAG,CACzC,MAAMksB,EAAY3uB,KAAK4uB,WAAW5uB,KAAKgL,QAAQ4gB,cAAc,IAC7DmB,EAAgB8B,cAAgBF,EAAUG,WAC1C/B,EAAgBgC,aAAeJ,EAAUK,aAC3C,CAUA,OARIhvB,KAAKgL,QAAQmgB,UACf4B,EAAgB5B,QAAUnrB,KAAKgL,QAAQmgB,SAGrCnrB,KAAKgL,QAAQogB,UACf2B,EAAgB3B,QAAUprB,KAAKgL,QAAQogB,SAGlC2B,CACT,CAEAwB,iBAAiBD,EAAMnvB,GACrB,MAAMysB,EAAgB,IAAI0C,EAAKhC,QAAQV,eAEvC,GAAIA,EAAcnpB,OAAS,EAAG,CAC5B,MAAM6qB,EAAgBttB,KAAKutB,oBAAoB3B,GAE3C5rB,KAAKwsB,WACPxsB,KAAK+K,SAAS/M,MAAQsvB,GAGpBttB,KAAK0sB,cACP1sB,KAAK0sB,YAAY1uB,MAAQ4tB,EAAc1f,KAAK,MAG1ClM,KAAK6sB,kBACP7sB,KAAK6sB,gBAAgBtC,YAAc+C,EAEvC,CAEA/tB,aAAamD,QAAQ1C,KAAK+K,SAAUqd,eAAc,CAChDiE,MAAOT,EACPzsB,UAGFa,KAAKivB,yBAAyBrD,EAChC,CAEAqD,yBAAyBrD,GACnB5rB,KAAKysB,YAKyB,WAA/BzsB,KAAKgL,QAAQ6gB,eAA8BD,EAAcnpB,OAAS,GACnC,oBAA/BzC,KAAKgL,QAAQ6gB,eAAuCD,EAAcnpB,QAAU,IAG7EoG,WAAW,IAAM7I,KAAK2b,OAvWT,IAyWjB,CAEAiT,WAAWM,GACT,MAAOC,EAAMC,EAAOC,GAAOH,EAAQ5oB,MAAM,KACzC,OAAO,IAAIyf,KAAKoJ,EAAMC,EAAQ,EAAGC,EACnC,CAEAC,YAAYJ,GACV,MAAMK,EAAOvvB,KAAK4uB,WAAWM,GACvBxD,EAAiC,YAAxB1rB,KAAKgL,QAAQ0gB,YAAuBrO,EAAYrd,KAAKgL,QAAQ0gB,QACtEL,WAAEA,GAAerrB,KAAKgL,QAG5B,MAA0B,mBAAfqgB,EACFA,EAAWkE,EAAM7D,GAItBL,GAAoC,iBAAfA,EAChB,IAAImE,KAAKC,eAAe/D,EAAQL,GAAYqE,OAAOH,GAIrDA,EAAKI,mBAAmBjE,EACjC,CAEA6B,oBAAoBlB,GAClB,GAAqB,IAAjBA,EAAM5pB,OACR,MAAO,GAGT,GAAqB,IAAjB4pB,EAAM5pB,OACR,OAAOzC,KAAKsvB,YAAYjD,EAAM,IAIhC,MAAMuD,EAA2C,oBAA/B5vB,KAAKgL,QAAQ6gB,cAAsC,MAAQ,KAC7E,OAAOQ,EAAMrgB,IAAI6jB,GAAK7vB,KAAKsvB,YAAYO,IAAI3jB,KAAK0jB,EAClD,CAEAxC,mBAEE,MAAMpvB,EAAQgC,KAAK+K,SAAS/M,MAAM+N,OAClC,IAAK/N,EACH,OAGF,MAAMuxB,EAAO,IAAIxJ,KAAK/nB,GACtB,IAAKsF,OAAO8V,MAAMmW,EAAKO,WAAY,CACjC,MAGMC,EAAY,GAHLR,EAAKP,iBACJgB,OAAOT,EAAKT,WAAa,GAAGrX,SAAS,EAAG,QAC1CuY,OAAOT,EAAKU,WAAWxY,SAAS,EAAG,OAE/CzX,KAAKgsB,UAAU9uB,IAAI,CAAE0uB,cAAe,CAACmE,IACvC,CACF,EAOFxwB,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB,SAAU3P,GAGzD,UAAjBa,KAAK0N,SAAiD,SAA1B1N,KAAKsE,QAAQ4rB,WAI7C/wB,EAAMwO,iBACNoe,WAAWrgB,oBAAoB1L,MAAMiP,SACvC,GAEA1P,aAAa0C,GAAG4D,SAAUmlB,uBAAwBlc,uBAAsB,WAEjD,UAAjB9O,KAAK0N,SAITqe,WAAWrgB,oBAAoB1L,MAAM4b,MACvC,GAGArc,aAAa0C,GAAG4D,SAAU,mBAAmBuF,uBAA4B,KACvE,IAAK,MAAMjO,KAAW0I,SAAS/F,iBAAiB,GAAGgP,iDACjDid,WAAWrgB,oBAAoBvO,KC7cnC,MAAMgzB,gBAAkB,cAiBxB,MAAMC,mBAAmBvlB,cACvBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAKkb,kBAAmB,EACxBlb,KAAKqwB,gBAAiB,EACtBrwB,KAAKswB,qBACP,CAGA,eAAW3mB,GACT,MAAO,YACT,CAIAsF,OAAOhO,GACL,OAAOjB,KAAK+K,SAASwlB,KAAOvwB,KAAK2b,OAAS3b,KAAK4b,KAAK3a,EACtD,CAEA2a,KAAK3a,GACH,GAAIjB,KAAK+K,SAASwlB,MAAQvwB,KAAKkb,iBAC7B,OASF,GANkB3b,aAAamD,QAC7B1C,KAAK+K,SACL/K,KAAKmK,YAAYwB,UAAU,QAC3B,CAAE1K,kBAGUyN,iBACZ,OAGF1O,KAAKkb,kBAAmB,EACxBlb,KAAKwwB,gBAEL,MAAMC,MAAEA,EAAKC,kBAAEA,GAAsB1wB,KAAK2wB,kBAC1C3wB,KAAK4wB,aAAa,CAAEH,QAAOC,sBAE3B1wB,KAAKuL,eAAe,KAClBvL,KAAKkb,kBAAmB,EACxB3b,aAAamD,QACX1C,KAAK+K,SACL/K,KAAKmK,YAAYwB,UAAU,SAC3B,CAAE1K,mBAEHjB,KAAK+K,SAAU/K,KAAK6wB,cACzB,CAEAlV,OACO3b,KAAK+K,SAASwlB,OAAQvwB,KAAKkb,mBAId3b,aAAamD,QAC7B1C,KAAK+K,SACL/K,KAAKmK,YAAYwB,UAAU,SAGf+C,mBAId1O,KAAKkb,kBAAmB,EACxBlb,KAAK8wB,eAEL9wB,KAAKuL,eAAe,KAIdvL,KAAK+K,SAASwlB,MAChBvwB,KAAK+wB,mBAGP/wB,KAAK+K,SAASzD,UAAUrJ,OAAO,UAC/B+B,KAAKgxB,eACLhxB,KAAKkb,kBAAmB,EACxB3b,aAAamD,QACX1C,KAAK+K,SACL/K,KAAKmK,YAAYwB,UAAU,YAE5B3L,KAAK+K,SAAU/K,KAAK6wB,gBACzB,CAIAF,kBACE,MAAO,CAAEF,OAAO,EAAMC,mBAAmB,EAC3C,CAEAF,gBACE,CAGFQ,eACE,CAGFH,cACE,OAAQ7wB,KAAK+K,SAASzD,UAAUpG,SAASlB,KAAKixB,uBAChD,CAEAA,uBACE,MAAO,gBACT,CAEAC,sBACE,MAAO,eACT,CAEAC,YACE,CAKFP,cAAaH,MAAEA,GAAQ,EAAIC,kBAAEA,GAAoB,GAAS,IACxD1wB,KAAKqwB,eAAiBI,EAElBA,EACFzwB,KAAK+K,SAASqmB,YAEdpxB,KAAK+K,SAAS6Q,OAGZ8U,GACF7qB,SAAS4b,KAAKna,UAAUiM,IAjJN,cAmJtB,CAEAud,eACE9wB,KAAKqxB,uBAKLrxB,KAAK+K,SAASzD,UAAUiM,IAAI,UAOvBvT,KAAKsxB,qBACRtxB,KAAK+wB,kBAET,CAIAA,mBACE/wB,KAAK+K,SAAS0D,QACdzO,KAAKqwB,gBAAiB,EAGjBxqB,SAASc,cAAc,uBAC1Bd,SAAS4b,KAAKna,UAAUrJ,OA/KN,cAiLtB,CAKAqzB,oBACE,OAAO,CACT,CAEAC,6BAME,GAL2BhyB,aAAamD,QACtC1C,KAAK+K,SACL/K,KAAKmK,YAAYwB,UAAU,kBAGN+C,iBACrB,OAGF,MAAM8iB,EAAcxxB,KAAKkxB,sBACzBlxB,KAAK+K,SAASzD,UAAUiM,IAAIie,GAC5BxxB,KAAKuL,eAAe,KAClBvL,KAAK+K,SAASzD,UAAUrJ,OAAOuzB,IAC9BxxB,KAAK+K,SACV,CAKAsmB,uBAGE,IAAK,MAAMnkB,KAAMf,eAAe3L,KAFf,yDAE8BR,KAAK+K,UAAW,CAC7D,MAAM1N,EAAWJ,KAAKY,OAAOqP,GACzB7P,GAAqC,mBAAlBA,EAASse,MAC9Bte,EAASse,MAEb,CAGA,IAAK,MAAMzO,KAAMf,eAAe3L,KAAK,cAAeR,KAAK+K,UAAW,CAClE,MAAM1N,EAAWJ,KAAKY,OAAOqP,GACzB7P,GAAqC,mBAAlBA,EAASse,MAC9Bte,EAASse,MAEb,CACF,CAIA2U,sBACE,MAAMmB,EAAWzxB,KAAKmK,YAAYiB,UAGlC7L,aAAa0C,GAAGjC,KAAK+K,SAAU,SAAU5L,IACvCA,EAAMwO,iBAED3N,KAAKgL,QAAQ0G,UAKlB1R,KAAKmxB,YACLnxB,KAAK2b,QALH3b,KAAKuxB,+BASThyB,aAAa0C,GAAGjC,KAAK+K,SAAU,UAAU0mB,IAAYtyB,IACjC,WAAdA,EAAM/B,KAAoB4C,KAAKqwB,iBAInClxB,EAAMwO,iBAED3N,KAAKgL,QAAQ0G,WAIlB1R,KAAKmxB,YACLnxB,KAAK2b,WAIPpc,aAAa0C,GAAGjC,KAAK+K,SAAU,QAAQ0mB,IAAYtyB,IAC7CA,EAAMY,SAAWC,KAAK+K,UAAa/K,KAAKqwB,iBAId,WAA1BrwB,KAAKgL,QAAQ0mB,SAKjB1xB,KAAK2b,OAJH3b,KAAKuxB,+BAMX,EC9QF,MAAM5nB,OAAO,SACPuB,WAAW,YACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfwL,aAAa,OAAOhP,cACpBmP,eAAe,SAASnP,cACxBumB,aAAe,SAASvmB,cACxB2D,uBAAuB,QAAQ3D,uBAE/BwmB,oBAAsB,kBACtBC,mBAAqB,iBACrBC,mBAAqB,iBAErBhjB,uBAAuB,4BAEvBrF,UAAU,CACdioB,UAAU,EACVhgB,UAAU,EACV+e,OAAO,GAGH/mB,cAAc,CAClBgoB,SAAU,mBACVhgB,SAAU,UACV+e,MAAO,WAOT,MAAMsB,eAAe3B,WAEnB,kBAAW3mB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAqoB,eACE,CAKFrB,kBACE,MAAO,CACLF,MAAOzwB,KAAKgL,QAAQylB,MACpBC,kBAAmB1wB,KAAKgL,QAAQylB,MAEpC,CAEAD,gBACOxwB,KAAKgL,QAAQylB,OAChBzwB,KAAK+K,SAASzD,UAAUiM,IApDF,kBAsD1B,CAEAyd,eACEhxB,KAAK+K,SAASzD,UAAUrJ,OAzDA,kBA0D1B,CAQAqzB,oBACE,OAAOtxB,KAAK6wB,aACd,CAEAM,YACE5xB,aAAamD,QAAQ1C,KAAK+K,SAAU4mB,aACtC,EAOFpyB,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB,SAAU3P,GAC9E,MAAMY,EAASoM,eAAeiB,uBAAuBpN,MAEjD,CAAC,IAAK,QAAQgC,SAAShC,KAAK0N,UAC9BvO,EAAMwO,iBAGRpO,aAAa2C,IAAInC,EAAQqa,aAAY6X,IAC/BA,EAAUvjB,kBAIdnP,aAAa2C,IAAInC,EAAQwa,eAAc,KACjC3T,UAAU5G,OACZA,KAAKiZ,YAMX,MAAMnP,EAAShG,YAAYK,kBAAkBnE,MAGvCkyB,EAAgBlyB,KAAKiH,QAAQ,gBAGnC,GAFmBirB,GAAiBA,IAAkBnyB,EAEtC,CAed,MAAMoyB,EAAYJ,OAAOrmB,oBAAoB3L,EAAQ+J,GACrD/J,EAAOuH,UAAUiM,IAvHM,kBAwHvB4e,EAAUvW,KAAK5b,MACfT,aAAa2C,IAAInC,EAAQ,QAAQqL,cAAa,KAC5CrL,EAAOuH,UAAUrJ,OA1HI,oBA6HvB,MAAMm0B,EAAkBL,OAAOtmB,YAAYymB,GAa3C,YAZIE,IAKFF,EAAc5qB,UAAUiM,IApIH,kBAqIrBhU,aAAa2C,IAAIgwB,EAAe3X,eAAc,KAC5C2X,EAAc5qB,UAAUrJ,OAtIL,oBAwIrBm0B,EAAgBzW,QAIpB,CAEaoW,OAAOrmB,oBAAoB3L,EAAQ+J,GAC3CmF,OAAOjP,KACd,GAEAsN,qBAAqBykB,QChKrB,MAAMpoB,OAAO,cACPuB,WAAW,iBACXE,YAAY,IAAIF,aAEhBmnB,aAAe,SAASjnB,cACxBknB,eAAiB,WAAWlnB,cAE5BmnB,oBAAsB,eACtBC,yBAA2B,oBAC3BC,kBAAoB,SAEpBC,kBAAoB,YACpBC,kBAAoB,YACpBC,yBAA2B,uBAC3BC,uBAAyB,qBACzBC,qBAAuB,0BACvBC,gBAAkB,oBAElBtpB,UAAU,CACdupB,cAAe,EACfC,cAAe,QACfC,cAAe,aACfC,SAAU,OACVC,SAAU,sPACVje,UAAW,GAGPzL,cAAc,CAClBspB,cAAe,kBACfC,cAAe,SACfC,cAAe,SACfC,SAAU,SACVC,SAAU,SACVje,UAAW,UAOb,MAAMke,oBAAoBxoB,cACxBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAKszB,OAAS,GACdtzB,KAAKuzB,eAAiB,GACtBvzB,KAAKwzB,cAAgB,KACrBxzB,KAAKyzB,gBAAkB,KACvBzzB,KAAK0zB,gBAAkB,KACvB1zB,KAAK2zB,eAAiB,EACtB3zB,KAAK4zB,gBAAiB,EAEtB5zB,KAAK6zB,OACP,CAGA,kBAAWpqB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAuY,SACEliB,KAAK8zB,qBACLv0B,aAAamD,QAAQ1C,KAAK+K,SAAUsnB,aACtC,CAEAlnB,UACMnL,KAAK0zB,iBACP1zB,KAAK0zB,gBAAgBlf,aAIvBxU,KAAK+zB,gBAGD/zB,KAAKyzB,iBAAmBzzB,KAAKyzB,gBAAgBO,eAC/Ch0B,KAAKyzB,gBAAgBO,cAAc/1B,SAGrC6M,MAAMK,SACR,CAGA0oB,QAEE7zB,KAAK+K,SAASzD,UAAUiM,IAtFA,gBAyFxBvT,KAAKszB,OAAS,IAAInnB,eAAe3L,KArFX,YAqFmCR,KAAK+K,WAG9D,IAAK,MAAO3B,EAAOgM,KAASpV,KAAKszB,OAAOvxB,UACtCqT,EAAK9Q,QAAQ2vB,WAAa7qB,EAI5BpJ,KAAK2zB,eAAiB3zB,KAAKk0B,wBAG3Bl0B,KAAKm0B,sBAGLn0B,KAAKo0B,uBAGLp0B,KAAK8zB,qBAEL9zB,KAAK4zB,gBAAiB,CACxB,CAEAO,sBAIE,GAFAn0B,KAAKyzB,gBAAkBtnB,eAAeE,QA3GT,uBA2G2CrM,KAAK+K,UAEzE/K,KAAKyzB,gBAEP,YADAzzB,KAAKwzB,cAAgBrnB,eAAeE,QA7GX,qBA6G2CrM,KAAK+K,WAI3E,MACMspB,EAAW,mCADAr0B,KAAKs0B,wBAEhBC,EAAW,mCAAmCv0B,KAAKgL,QAAQmoB,kBAC3DqB,EAA+C,QAA/Bx0B,KAAKgL,QAAQioB,cACjC,GAAGsB,IAAWF,IACd,GAAGA,IAAWE,IAEVE,EAAe5uB,SAAS6jB,cAAc,MAC5C+K,EAAaC,UAAY,6BACzBD,EAAaE,UAAY,+GAC+E30B,KAAKgL,QAAQkoB,kDAC/GsB,6EAKNx0B,KAAK+K,SAASqN,OAAOqc,GACrBz0B,KAAKyzB,gBAAkBgB,EAAa9tB,cAnIP,wBAoI7B3G,KAAKwzB,cAAgBiB,EAAa9tB,cAnIP,qBAoI7B,CAEA2tB,eACE,MAAMM,EAAoBzoB,eAAeE,QAAQymB,qBAAsB9yB,KAAK+K,UAE5E,IAAK6pB,EACH,OAAO50B,KAAKgL,QAAQooB,SAGtB,MAAMyB,EAAYD,EAAkB3c,WAAU,GAC9C4c,EAAU3wB,gBAAgB,yBAC1B,MAAM4wB,EAAWD,EAAUE,UAI3B,OAFAH,EAAkB32B,SAEX62B,CACT,CAEAZ,wBACE,MAAMl2B,EAAQgC,KAAKgL,QAAQgoB,cAE3B,GAAqB,iBAAVh1B,EACT,OAAOA,EAGT,GAAqB,iBAAVA,GAAgC,KAAVA,EAAc,CAC7C,MAAMg3B,EAAW9uB,iBAAiBL,SAAS6B,iBACxCX,iBAAiB,mBAAmB/I,KACvC,OAAOsF,OAAO8C,WAAW4uB,IAAa,CACxC,CAEA,OAAO,CACT,CAEAZ,uBACgC,oBAAnBa,gBAMXj1B,KAAK0zB,gBAAkB,IAAIuB,eAAe,KACxCj1B,KAAK8zB,uBAGP9zB,KAAK0zB,gBAAgBre,QAAQrV,KAAK+K,WARhCxL,aAAa0C,GAAG+C,OAAQ,SAAU,IAAMhF,KAAK8zB,qBASjD,CAEAA,qBAEE9zB,KAAK+zB,gBAEL,MAAMmB,EAAWl1B,KAAK+K,SAASoqB,YACzBV,EAAez0B,KAAKyzB,iBAAiBxsB,QAAQ,aAGnD,GAAIjH,KAAK2zB,eAAiB,GAAKuB,EAAWl1B,KAAK2zB,eAAgB,CAC7D,MAAMyB,EAAkBp1B,KAAKszB,OAAO/uB,OAClC6Q,IAASA,EAAK9N,UAAUpG,SAAS6xB,kBAoBnC,OAjBA/yB,KAAKq1B,gBAAgBD,GAEjBX,IACEW,EAAgB3yB,OAAS,EAC3BgyB,EAAantB,UAAUrJ,OA1MP,UA4MhBw2B,EAAantB,UAAUiM,IA5MP,gBAgNhB6hB,EAAgB3yB,OAAS,GAC3BlD,aAAamD,QAAQ1C,KAAK+K,SAAUunB,eAAgB,CAClDgD,cAAeF,EAAgB3yB,OAC/BkoB,aAAc3qB,KAAKszB,OAAO7wB,OAAS2yB,EAAgB3yB,SAKzD,CAUA,IAAI8yB,EAAY,EAChB,MAAMH,EAAkB,GAClBI,EAAoBN,GAVJT,GAAcU,aAAe,GAIjCn1B,KAAKszB,OACpB/uB,OAAO6Q,GAAQA,EAAK9N,UAAUpG,SAAS6xB,kBACvC0C,OAAO,CAACC,EAAKtgB,IAASsgB,EAAMtgB,EAAK+f,YAAa,GAIgB,GAGjE,IAAK,MAAM/f,KAAQpV,KAAKszB,OAElBle,EAAK9N,UAAUpG,SAAS6xB,mBAI5BwC,GAAangB,EAAK+f,YAEdI,EAAYC,GACdJ,EAAgBzoB,KAAKyI,IAMzB,GADqBpV,KAAKszB,OAAO7wB,OAAS2yB,EAAgB3yB,OACvCzC,KAAKgL,QAAQmK,WAAanV,KAAKszB,OAAO7wB,OAASzC,KAAKgL,QAAQmK,UAAW,CAExF,MAAMwgB,EAAS31B,KAAKszB,OAAO/wB,MAAMvC,KAAKgL,QAAQmK,WAAW5Q,OAAO6Q,IAASA,EAAK9N,UAAUpG,SAAS6xB,kBACjGqC,EAAgB3yB,OAAS,EACzB2yB,EAAgBzoB,QAAQgpB,EAC1B,CAGA31B,KAAKq1B,gBAAgBD,GAGjBX,IACEW,EAAgB3yB,OAAS,EAC3BgyB,EAAantB,UAAUrJ,OAnQL,UAqQlBw2B,EAAantB,UAAUiM,IArQL,WA0QlB6hB,EAAgB3yB,OAAS,GAC3BlD,aAAamD,QAAQ1C,KAAK+K,SAAUunB,eAAgB,CAClDgD,cAAeF,EAAgB3yB,OAC/BkoB,aAAc3qB,KAAKszB,OAAO7wB,OAAS2yB,EAAgB3yB,QAGzD,CAEA4yB,gBAAgB7hB,GACd,GAAKxT,KAAKwzB,cAAV,CAKAxzB,KAAKwzB,cAAcmB,UAAY,GAC/B30B,KAAKuzB,eAAiB,GAEtB,IAAK,MAAMne,KAAQ5B,EAAO,CACxB,MAAMoiB,EAAOzpB,eAAeE,QAzRR,YAyRmC+I,GACvD,IAAKwgB,EACH,SAGF,MAAMC,EAAaD,EAAK3d,WAAU,GAClC4d,EAAWnB,UAAY,YAEnBkB,EAAKtuB,UAAUpG,SAAS,WAC1B20B,EAAWvuB,UAAUiM,IAAI,WAGvBqiB,EAAKtuB,UAAUpG,SAAS,aAAe00B,EAAKpuB,aAAa,cAC3DquB,EAAWvuB,UAAUiM,IAAI,YAG3BvT,KAAKwzB,cAAcpb,OAAOyd,GAG1BzgB,EAAK9N,UAAUiM,IA/SK,UAgTpB6B,EAAK9Q,QAAQwxB,cAAgB,OAE7B91B,KAAKuzB,eAAe5mB,KAAKyI,EAC3B,CA9BA,CA+BF,CAEA2e,gBACE,IAAK,MAAM3e,KAAQpV,KAAKszB,OACtBle,EAAK9N,UAAUrJ,OAxTK,iBAyTbmX,EAAK9Q,QAAQwxB,cAGlB91B,KAAKwzB,gBACPxzB,KAAKwzB,cAAcmB,UAAY,IAGjC30B,KAAKuzB,eAAiB,EACxB,EAOFh0B,aAAa0C,GAAG4D,SAAU,mBAAoB,KAC5C,IAAK,MAAM1I,KAAWgP,eAAe3L,KAAK,mCACxC6yB,YAAY3nB,oBAAoBvO,KCnVpC,MAAMwM,OAAO,QACPyB,YAAY,YACZ2qB,iBAAmB,sBACnBC,gBAAkB,qBAClBC,eAAiB,oBACjBrmB,kBAAoB,uBACpBsmB,gBAAkB,qBAClBC,mBAAqB,QACrBC,iBAAmB,MACnBC,yBAA2B,gBAC3BC,gBAAkB,GAElB7sB,UAAU,CACd8sB,YAAa,KACbC,aAAc,KACdC,cAAe,KACfC,WAAY,KACZC,aAAc,MAGVjtB,cAAc,CAClB6sB,YAAa,kBACbC,aAAc,kBACdC,cAAe,kBACfC,WAAY,kBACZC,aAAc,mBAOhB,MAAMC,cAAcptB,OAClBW,YAAYhN,EAAS2M,GACnBgB,QACA9K,KAAK+K,SAAW5N,EAEXA,GAAYy5B,MAAMC,gBAIvB72B,KAAKgL,QAAUhL,KAAK6J,WAAWC,GAC/B9J,KAAK82B,QAAU,EACf92B,KAAK+2B,QAAU,EACf/2B,KAAKg3B,sBAAwBt1B,QAAQsD,OAAOiyB,cAC5Cj3B,KAAKk3B,cACP,CAGA,kBAAWztB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAwB,UACE5L,aAAaC,IAAIQ,KAAK+K,SA9DR,YA+DhB,CAGAosB,OAAOh4B,GACL,IAAKa,KAAKg3B,sBAIR,OAHAh3B,KAAK82B,QAAU33B,EAAMi4B,QAAQ,GAAGxR,aAChC5lB,KAAK+2B,QAAU53B,EAAMi4B,QAAQ,GAAGvR,SAK9B7lB,KAAKq3B,wBAAwBl4B,KAC/Ba,KAAK82B,QAAU33B,EAAMymB,QACrB5lB,KAAK+2B,QAAU53B,EAAM0mB,QAEzB,CAEAyR,KAAKn4B,GACCa,KAAKq3B,wBAAwBl4B,KAC/Ba,KAAK82B,QAAU33B,EAAMymB,QAAU5lB,KAAK82B,QACpC92B,KAAK+2B,QAAU53B,EAAM0mB,QAAU7lB,KAAK+2B,SAGtC/2B,KAAKu3B,eACLnvB,QAAQpI,KAAKgL,QAAQurB,YACvB,CAEAiB,MAAMr4B,GACJ,GAAIA,EAAMi4B,SAAWj4B,EAAMi4B,QAAQ30B,OAAS,EAG1C,OAFAzC,KAAK82B,QAAU,OACf92B,KAAK+2B,QAAU,GAIjB/2B,KAAK82B,QAAU33B,EAAMi4B,QAAQ,GAAGxR,QAAU5lB,KAAK82B,QAC/C92B,KAAK+2B,QAAU53B,EAAMi4B,QAAQ,GAAGvR,QAAU7lB,KAAK+2B,OACjD,CAEAQ,eACE,MAAME,EAAY/xB,KAAK4Q,IAAItW,KAAK82B,SAC1BY,EAAYhyB,KAAK4Q,IAAItW,KAAK+2B,SAGhC,GAAIW,EAAYD,GAAaC,EAjGT,GAiGsC,CAExD,MAAMxjB,EAAYlU,KAAK+2B,QAAU,EAAI,OAAS,KAI9C,OAHA/2B,KAAK82B,QAAU,EACf92B,KAAK+2B,QAAU,OACf3uB,QAAsB,SAAd8L,EAAuBlU,KAAKgL,QAAQ2rB,aAAe32B,KAAKgL,QAAQ0rB,WAE1E,CAEA,GAAIe,EA1GgB,GA0Ga,CAE/B,MAAMvjB,EAAYujB,EAAYz3B,KAAK82B,QAInC,GAHA92B,KAAK82B,QAAU,EACf92B,KAAK+2B,QAAU,GAEV7iB,EACH,OAIF,YADA9L,QAAQ8L,EAAY,EAAIlU,KAAKgL,QAAQyrB,cAAgBz2B,KAAKgL,QAAQwrB,aAEpE,CAEAx2B,KAAK82B,QAAU,EACf92B,KAAK+2B,QAAU,CACjB,CAEAG,cACMl3B,KAAKg3B,uBACPz3B,aAAa0C,GAAGjC,KAAK+K,SAAU6E,kBAAmBzQ,GAASa,KAAKm3B,OAAOh4B,IACvEI,aAAa0C,GAAGjC,KAAK+K,SAAUmrB,gBAAiB/2B,GAASa,KAAKs3B,KAAKn4B,IAEnEa,KAAK+K,SAASzD,UAAUiM,IAlIG,mBAoI3BhU,aAAa0C,GAAGjC,KAAK+K,SAAUgrB,iBAAkB52B,GAASa,KAAKm3B,OAAOh4B,IACtEI,aAAa0C,GAAGjC,KAAK+K,SAAUirB,gBAAiB72B,GAASa,KAAKw3B,MAAMr4B,IACpEI,aAAa0C,GAAGjC,KAAK+K,SAAUkrB,eAAgB92B,GAASa,KAAKs3B,KAAKn4B,IAEtE,CAEAk4B,wBAAwBl4B,GACtB,OAAOa,KAAKg3B,wBA5IS,QA4IiB73B,EAAMw4B,aA7IrB,UA6IyDx4B,EAAMw4B,YACxF,CAGA,kBAAOd,GACL,MAAO,iBAAkBhxB,SAAS6B,iBAAmBkwB,UAAUC,eAAiB,CAClF,ECnJF,MAAMluB,OAAO,SACPuB,WAAW,YACXE,YAAY,IAAIF,aAChB0D,eAAe,YACfiB,sBAAsB,OAAOzE,uBAE7BmP,eAAe,SAASnP,cACxB0sB,aAAe,SAAS1sB,cACxB2D,uBAAuB,QAAQ3D,uBAE/B0D,uBAAuB,4BAEvBrF,UAAU,CACdioB,UAAU,EACVhgB,UAAU,EACVqmB,QAAQ,GAGJruB,cAAc,CAClBgoB,SAAU,mBACVhgB,SAAU,UACVqmB,OAAQ,WAOV,MAAMC,eAAe5H,WACnBjmB,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GACf9J,KAAKi4B,aAAe,IACtB,CAGA,kBAAWxuB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAwB,UACMnL,KAAKi4B,cACPj4B,KAAKi4B,aAAa9sB,UAGpBL,MAAMK,SACR,CAIAwlB,kBAEE,MAAO,CACLF,MAFe/uB,QAAQ1B,KAAKgL,QAAQ0mB,YAAc1xB,KAAKgL,QAAQ+sB,OAG/DrH,mBAAoB1wB,KAAKgL,QAAQ+sB,OAErC,CAEAvH,gBACExwB,KAAKk4B,YACP,CAEAjH,uBACE,MAAO,gBACT,CAEAC,sBACE,MAAO,eACT,CAIAgH,aACE,GAAIl4B,KAAKi4B,eAAiBrB,MAAMC,cAC9B,OAIF,MAAMsB,EAAc,GACdh7B,EAAU6C,KAAK+K,SAEjB5N,EAAQmK,UAAUpG,SAAS,iBAC7Bi3B,EAAYxB,aAAe,IAAM32B,KAAK2b,OAC7Bxe,EAAQmK,UAAUpG,SAAS,cACpCi3B,EAAYzB,WAAa,IAAM12B,KAAK2b,OAC3Bxe,EAAQmK,UAAUpG,SAAS,cAEhCgH,QACFiwB,EAAY3B,aAAe,IAAMx2B,KAAK2b,OAEtCwc,EAAY1B,cAAgB,IAAMz2B,KAAK2b,OAEhCzT,QAETiwB,EAAY1B,cAAgB,IAAMz2B,KAAK2b,OAGvCwc,EAAY3B,aAAe,IAAMx2B,KAAK2b,OAGxC3b,KAAKi4B,aAAe,IAAIrB,MAAMz5B,EAASg7B,EACzC,EAOF54B,aAAa0C,GAAG4D,SAAUkJ,uBAAsBD,uBAAsB,SAAU3P,GAC9E,MAAMY,EAASoM,eAAeiB,uBAAuBpN,MAMrD,GAJI,CAAC,IAAK,QAAQgC,SAAShC,KAAK0N,UAC9BvO,EAAMwO,iBAGJxG,WAAWnH,MACb,OAGFT,aAAa2C,IAAInC,EAAQwa,eAAc,KACjC3T,UAAU5G,OACZA,KAAKiZ,UAKT,MAAMmf,EAAcjsB,eAAeE,QAAQ,uBACvC+rB,GAAeA,IAAgBr4B,GACjCi4B,OAAOvsB,YAAY2sB,GAAazc,OAGrBqc,OAAOtsB,oBAAoB3L,GACnCkP,OAAOjP,KACd,GAEAT,aAAa0C,GAAG+C,OAAQ6K,sBAAqB,KAC3C,IAAK,MAAMjQ,KAAYuM,eAAe3L,KAAK,uBACzCw3B,OAAOtsB,oBAAoB9L,GAAUgc,SAIzCrc,aAAa0C,GAAG+C,OAAQ8yB,aAAc,KACpC,IAAK,MAAM36B,KAAWgP,eAAe3L,KAAK,oCACG,UAAvC0F,iBAAiB/I,GAAS2mB,UAC5BkU,OAAOtsB,oBAAoBvO,GAASwe,SAK1CrO,qBAAqB0qB,QCpKrB,MAAMruB,OAAO,WACPuB,WAAW,cACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfypB,sBAAwB,iBAAiBjtB,cAEzCktB,uBAAyB,qBAEzBC,gBAAkB,CAAC,OAAQ,OAAQ,OAAQ,UAE3C9uB,UAAU,CACd+uB,MAAO,KACPC,UAAW,EACXC,SAAU,CACRC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,OAAQ,UAEVC,QAAS,CACPN,UAAW,EACXO,YAAa,EACbC,UAAW,EACXC,UAAW,EACXC,QAAS,EACTC,QAAS,EACTC,gBAAiB,EACjBC,aAAc,GAEhBC,WAAY,CAAC,EAAG,EAAG,GACnBC,OAAQ,MAGJ9vB,cAAc,CAClB8uB,MAAO,wBACPC,UAAW,SACXC,SAAU,SACVK,QAAS,SACTQ,WAAY,QACZC,OAAQ,mBAOV,MAAMC,iBAAiB5uB,cACrBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAK05B,OAAS15B,KAAK25B,YACnB35B,KAAK45B,UAAYztB,eAAe3L,KAAK,oBAAqBR,KAAK+K,UAC/D/K,KAAK65B,aAAe1tB,eAAeE,QAAQ,iBAAkBrM,KAAK+K,SAASipB,eAC3Eh0B,KAAK85B,iBAAmB,KAEpB95B,KAAK05B,SACP15B,KAAK4S,qBAEL5S,KAAK+5B,YAET,CAGA,kBAAWtwB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAqwB,cACE,OAAOh6B,KAAK85B,gBACd,CAEAG,WACEj6B,KAAK+5B,WACP,CAGAJ,YACE,GAAI35B,KAAKgL,QAAQwtB,MACf,MAAqC,iBAAvBx4B,KAAKgL,QAAQwtB,MACzBrsB,eAAeE,QAAQrM,KAAKgL,QAAQwtB,OACpCx4B,KAAKgL,QAAQwtB,MAIjB,MAAMxd,EAAShb,KAAK+K,SAASipB,cAC7B,OAAO7nB,eAAeE,QAAQ,yBAA0B2O,EAC1D,CAEApI,qBACErT,aAAa0C,GAAGjC,KAAK05B,OAAQ,QAAS,IAAM15B,KAAK+5B,aACjDx6B,aAAa0C,GAAGjC,KAAK05B,OAAQ,SAAU,IAAM15B,KAAK+5B,YACpD,CAEAA,YACE,MAAMG,EAAWl6B,KAAK05B,OAAO17B,MACvBm8B,EAAQn6B,KAAKo6B,gBAAgBF,GAC7BG,EAAWr6B,KAAKs6B,iBAAiBH,GAEnCE,IAAar6B,KAAK85B,mBACpB95B,KAAK85B,iBAAmBO,EACxBr6B,KAAKu6B,UAAUF,EAAUF,GAEzB56B,aAAamD,QAAQ1C,KAAK+K,SAAUstB,sBAAuB,CACzDgC,WACAF,QACAD,SAAUA,EAASz3B,OAAS,EAAI,MAAQ,KAG9C,CAEA23B,gBAAgBF,GACd,IAAKA,EACH,OAAO,EAIT,GAAmC,mBAAxBl6B,KAAKgL,QAAQwuB,OACtB,OAAOx5B,KAAKgL,QAAQwuB,OAAOU,GAG7B,MAAMnB,QAAEA,GAAY/4B,KAAKgL,QACzB,IAAImvB,EAAQ,EAsCZ,OAnCID,EAASz3B,QAAUzC,KAAKgL,QAAQytB,YAClC0B,GAASpB,EAAQN,WAGfyB,EAASz3B,QAAUzC,KAAKgL,QAAQytB,UAAY,IAC9C0B,GAASpB,EAAQC,aAIf,QAAQvuB,KAAKyvB,KACfC,GAASpB,EAAQE,WAGf,QAAQxuB,KAAKyvB,KACfC,GAASpB,EAAQG,WAGf,KAAKzuB,KAAKyvB,KACZC,GAASpB,EAAQI,SAIf,yBAAyB1uB,KAAKyvB,KAChCC,GAASpB,EAAQK,SAIf,iDAAiD3uB,KAAKyvB,KACxDC,GAASpB,EAAQM,iBAGfa,EAASz3B,QAAU,KACrB03B,GAASpB,EAAQO,cAGZa,CACT,CAEAG,iBAAiBH,GACf,GAAc,IAAVA,EACF,OAAO,KAGT,MAAOxB,EAAMC,EAAMC,GAAQ74B,KAAKgL,QAAQuuB,WAExC,OAAIY,GAASxB,EACJ,OAGLwB,GAASvB,EACJ,OAGLuB,GAAStB,EACJ,OAGF,QACT,CAEA0B,UAAUF,GAEJA,EACFr6B,KAAK+K,SAASzG,QAAQk2B,WAAaH,SAE5Br6B,KAAK+K,SAASzG,QAAQk2B,WAI/B,MAAMC,EAAgBJ,EAAW9B,gBAAgBlvB,QAAQgxB,IAAY,EAErE,IAAK,MAAOjxB,EAAOsxB,KAAY16B,KAAK45B,UAAU73B,UACxCqH,GAASqxB,EACXC,EAAQpzB,UAAUiM,IAAI,UAEtBmnB,EAAQpzB,UAAUrJ,OAAO,UAK7B,GAAI+B,KAAK65B,aACP,GAAIQ,GAAYr6B,KAAKgL,QAAQ0tB,SAAS2B,GAAW,CAC/Cr6B,KAAK65B,aAAatP,YAAcvqB,KAAKgL,QAAQ0tB,SAAS2B,GACtDr6B,KAAK65B,aAAav1B,QAAQk2B,WAAaH,EAGvC,MAAMM,EAAW,CACfhC,KAAM,SACNC,KAAM,UACNC,KAAM,OACNC,OAAQ,WAEV94B,KAAK65B,aAAallB,MAAM8E,YAAY,mBAAoB,SAASkhB,EAASN,WAC5E,MACEr6B,KAAK65B,aAAatP,YAAc,UACzBvqB,KAAK65B,aAAav1B,QAAQk2B,UAGvC,EAOFj7B,aAAa0C,GAAG4D,SAAU,mBAAmBuF,uBAA4B,KACvE,IAAK,MAAMjO,KAAWgP,eAAe3L,KAzOR,sBA0O3Bi5B,SAAS/tB,oBAAoBvO,KCjPjC,MAAMwM,OAAO,WACPuB,WAAW,cACXE,YAAY,IAAIF,aAChB0D,eAAe,YAEfgsB,eAAiB,WAAWxvB,cAC5ByvB,cAAc,QAAQzvB,cACtB0vB,wBAA0B,mBAAmB1vB,uBAE7C2vB,kBAAoB,gBACpBC,iBAAiB,QAGjBC,YAAc,CAAC,OAAQ,QAAS,QAAS,UAEzCC,iBAAmB,YACnBC,oBAAsB,eACtBC,iBAAmB,YACnBC,gBAAkB,WAClBC,uBAAyB,kBACzBC,uBAAyB,kBACzBC,qBAAuB,gBAEvBC,eAAiB,IAGjBC,MAAQ,CACZC,QAAS,CAAEC,UAAW,UAAWC,QAAS,SAAUt3B,OAAQ,WAC5Du3B,aAAc,CAAEF,UAAW,OAAQC,QAAS,eAAgBt3B,OAAQ,iBACpEw3B,MAAO,CAAEH,UAAW,OAAQC,QAAS,YAAat3B,OAAQ,eAGtDkF,UAAU,CACduyB,OAAQ,KACRv5B,OAAQ,KACRw5B,MAAM,EACNrM,UAAW,IACXnwB,KAAM,WAGFiK,cAAc,CAClBsyB,OAAQ,eACRv5B,OAAQ,gBACRw5B,KAAM,UACNrM,UAAW,SACXnwB,KAAM,UAOR,MAAMy8B,iBAAiBrxB,cACrBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAK05B,OAASvtB,eAAeE,QA9CV,QA8CkCrM,KAAK+K,UACrD/K,KAAK05B,SAIV15B,KAAKm8B,MAAQT,MAAM17B,KAAKgL,QAAQvL,OAASi8B,MAAMC,QAC/C37B,KAAKo8B,QAAUp8B,KAAKq8B,iBACpBr8B,KAAKs8B,OAAS,GAEdt8B,KAAKu8B,cACLv8B,KAAKw8B,eACLx8B,KAAK4S,qBACL5S,KAAKy8B,UACP,CAGA,kBAAWhzB,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGA+yB,WACE,OAAO18B,KAAK05B,OAAO17B,KACrB,CAEA2+B,SAAS3+B,GACPgC,KAAK05B,OAAO17B,MAAQgC,KAAK48B,UAAU5M,OAAOhyB,IAC1CgC,KAAKy8B,UACLz8B,KAAK68B,gBACP,CAEAlX,QACE3lB,KAAK05B,OAAO17B,MAAQ,GACpBgC,KAAKy8B,UACLz8B,KAAK05B,OAAOzgB,OACd,CAEAA,QACEjZ,KAAK05B,OAAOzgB,QAEZ,MAAM6jB,EAAM98B,KAAK05B,OAAO17B,MAAMyE,OAC9BzC,KAAK05B,OAAOqD,kBAAkBD,EAAKA,GACnC98B,KAAKy8B,SACP,CAEAtxB,UACE5L,aAAaC,IAAIQ,KAAK05B,OAAQ,QAAS15B,KAAKg9B,UAC5Cz9B,aAAaC,IAAIQ,KAAK05B,OAAQ,QAAS15B,KAAKi9B,UAC5C,IAAK,MAAMx9B,KAAQw7B,YACjB17B,aAAaC,IAAIQ,KAAK05B,OAAQj6B,EAAMO,KAAKk9B,SAG3Cl9B,KAAKm9B,iBAAiBl/B,SACtB+B,KAAK+K,SAASzD,UAAUrJ,OArGA,gBAsGxB6M,MAAMK,SACR,CAGAkxB,iBACE,GAAIr8B,KAAKgL,QAAQvI,OACf,OAAOzC,KAAKgL,QAAQvI,OAGtB,MAAM26B,EAAY95B,OAAOqQ,SAAS3T,KAAK05B,OAAO/0B,aAAa,aAAc,IACzE,OAAOrB,OAAO8V,MAAMgkB,IAAcA,EAAY,EAAI,EAAIA,CACxD,CAEAb,cACE,MAAM/D,EAAQx4B,KAAK05B,OAIA,WAAflB,EAAM/4B,MAAoC,aAAf+4B,EAAM/4B,OACnC+4B,EAAM/4B,KAAO,QAGf+4B,EAAMlxB,UAAUiM,IA7HK,aA8HrBilB,EAAMx0B,aAAa,YAAagsB,OAAOhwB,KAAKo8B,UAC5C5D,EAAMx0B,aAAa,YAAahE,KAAKm8B,MAAMP,WAC3CpD,EAAMx0B,aAAa,UAAWhE,KAAKm8B,MAAMN,SAEpCrD,EAAM7zB,aAAa,iBACtB6zB,EAAMx0B,aAAa,eAAgB,iBAIjCw0B,EAAMx6B,QACRw6B,EAAMx6B,MAAQgC,KAAK48B,UAAUpE,EAAMx6B,OAEvC,CAEAw+B,eACE,MAAM3c,EAAYha,SAAS6jB,cAAc,OACzC7J,EAAU6U,UA5IW,YA6IrB7U,EAAU7b,aAAa,cAAe,QAEtC,MAAMg4B,OAAEA,GAAWh8B,KAAKgL,QACxB,IAAIqyB,EAAa,EACbC,EAAU,EAEd,IAAK,IAAIC,EAAI,EAAGA,EAAIv9B,KAAKo8B,QAASmB,IAAK,CACrC,MAAMC,EAAO33B,SAAS6jB,cAAc,OAMpC,GALA8T,EAAK9I,UApJa,WAqJlB7U,EAAUzH,OAAOolB,GACjBx9B,KAAKs8B,OAAO3vB,KAAK6wB,GAGbC,MAAMC,QAAQ1B,IAAWA,EAAOv5B,OAAS,IAC3C66B,IACIA,IAAYtB,EAAOqB,IAAeE,EAAIv9B,KAAKo8B,QAAU,GAAG,CAC1D,MAAMxM,EAAY/pB,SAAS6jB,cAAc,OACzCkG,EAAU8E,UA1JS,gBA2JnB9E,EAAUrF,YAAcvqB,KAAKgL,QAAQ4kB,UACrC/P,EAAUzH,OAAOwX,GACjByN,EAAa33B,KAAK6D,IAAI8zB,EAAa,EAAGrB,EAAOv5B,OAAS,GACtD66B,EAAU,CACZ,CAEJ,CAEAt9B,KAAKm9B,gBAAkBtd,EACvB7f,KAAK+K,SAASqN,OAAOyH,GACrB7f,KAAK+K,SAASzD,UAAUiM,IA1KA,eA2K1B,CAEAX,qBAIE5S,KAAKg9B,SAAW,IAAMh9B,KAAK29B,eAC3B39B,KAAKi9B,SAAW,IAAMj9B,KAAKiZ,QAC3BjZ,KAAKk9B,QAAU,IAAMl9B,KAAKy8B,UAE1Bl9B,aAAa0C,GAAGjC,KAAK05B,OAAQ,QAAS15B,KAAKg9B,UAC3Cz9B,aAAa0C,GAAGjC,KAAK05B,OAAQ,QAAS15B,KAAKi9B,UAG3C,IAAK,MAAMx9B,KAAQw7B,YACjB17B,aAAa0C,GAAGjC,KAAK05B,OAAQj6B,EAAMO,KAAKk9B,QAE5C,CAEAS,eACE,MAAMC,EAAY59B,KAAK48B,UAAU58B,KAAK05B,OAAO17B,OACzC4/B,IAAc59B,KAAK05B,OAAO17B,QAC5BgC,KAAK05B,OAAO17B,MAAQ4/B,GAGtB59B,KAAKy8B,UAELl9B,aAAamD,QAAQ1C,KAAK+K,SAAU8vB,cAAa,CAAE78B,MAAOgC,KAAK05B,OAAO17B,QAEtEgC,KAAK68B,gBACP,CAEAD,UAAU5+B,GACR,OAAOA,EAAMsD,QAAQtB,KAAKm8B,MAAM53B,OAAQ,IAAIhC,MAAM,EAAGvC,KAAKo8B,QAC5D,CAEAK,UACE,MAAMz+B,MAAEA,GAAUgC,KAAK05B,OACjBmE,EAAYh4B,SAASmD,gBAAkBhJ,KAAK05B,OAE5CoE,EAAQp4B,KAAK6D,IAAIvJ,KAAK05B,OAAOqE,gBAAkB//B,EAAMyE,OAAQzC,KAAKo8B,QAAU,GAElF,IAAK,MAAOhzB,EAAOo0B,KAASx9B,KAAKs8B,OAAOv6B,UAAW,CACjD,MAAMi8B,EAAOhgC,EAAMoL,IAAU,GAC7Bo0B,EAAKjT,YAAcyT,GAAQh+B,KAAKgL,QAAQixB,KAhNvB,IAgN+C+B,EAChER,EAAKl2B,UAAU2H,OArNU,kBAqNqBvN,QAAQs8B,IACtDR,EAAKl2B,UAAU2H,OArNU,kBAqNqB4uB,GAAaz0B,IAAU00B,EACvE,CACF,CAEAjB,iBACE,MAAM7+B,MAAEA,GAAUgC,KAAK05B,OACnB17B,EAAMyE,SAAWzC,KAAKo8B,SACxB78B,aAAamD,QAAQ1C,KAAK+K,SAAU6vB,eAAgB,CAAE58B,SAE1D,EAOFuB,aAAa0C,GAAG4D,SAAUi1B,wBAAyB,KACjD,IAAK,MAAM39B,KAAWgP,eAAe3L,KAjPb,iBAkPtB07B,SAASxwB,oBAAoBvO,KC3PjC,MAAMwM,OAAO,QACPuB,WAAW,WACXE,YAAY,YACZwD,eAAe,YAEfqvB,UAAY,eACZC,aAAe,kBACf9V,eAAe,kBACf+V,aAAe,kBAEfC,oBAAsB,kBACtBC,qBAAuB,cACvBC,cAAgB,QAChBC,sBAAwB,gBAExBC,gBAAkB,OAClBC,wBAA0B,eAC1B5vB,oBAAoB,SAEpB6vB,qBAAuB,gPAEvBj1B,UAAU,CACdmmB,UAAW,IACX+O,iBAAiB,EACjBC,SAAU,KACVhW,YAAa,GACbiW,aAAa,EACbC,YAAaJ,qBACbK,cAAc,GAGVr1B,cAAc,CAClBkmB,UAAW,gBACX+O,gBAAiB,UACjBC,SAAU,gBACVhW,YAAa,SACbiW,YAAa,UACbC,YAAa,SACbC,aAAc,WAOhB,MAAMC,cAAcn0B,cAClBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAK05B,OAASvtB,eAAeE,QAtCJ,cAsCkCrM,KAAK+K,UAChE/K,KAAKi/B,OAAS,GACdj/B,KAAKk/B,eAAiB,IAAItgC,IAC1BoB,KAAKm/B,YAAc,KAEdn/B,KAAK05B,QACR15B,KAAKo/B,eAGPp/B,KAAKq/B,2BACLr/B,KAAK4S,oBACP,CAGA,kBAAWnJ,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGA4J,IAAIvV,GACF,MAAMshC,EAAetP,OAAOhyB,GAAO+N,OAEnC,IAAKuzB,EACH,OAAO,KAIT,IAAKt/B,KAAKgL,QAAQ2zB,iBAAmB3+B,KAAKi/B,OAAOj9B,SAASs9B,GACxD,OAAO,KAIT,GAA8B,OAA1Bt/B,KAAKgL,QAAQ4zB,UAAqB5+B,KAAKi/B,OAAOx8B,QAAUzC,KAAKgL,QAAQ4zB,SACvE,OAAO,KAQT,GALiBr/B,aAAamD,QAAQ1C,KAAK+K,SAAUkzB,UAAW,CAC9DjgC,MAAOshC,EACPr+B,cAAejB,KAAK05B,SAGThrB,iBACX,OAAO,KAGT,MAAM6wB,EAAOv/B,KAAKw/B,YAAYF,GAQ9B,OAPAt/B,KAAK+K,SAAS4e,aAAa4V,EAAMv/B,KAAK05B,QACtC15B,KAAKi/B,OAAOtyB,KAAK2yB,GAEjB//B,aAAamD,QAAQ1C,KAAK+K,SAAUqd,eAAc,CAChDtqB,OAAQkC,KAAKy/B,cAGRF,CACT,CAEAthC,OAAOyhC,GACL,IAAIH,EACAvhC,EAUJ,MAR2B,iBAAhB0hC,GACT1hC,EAAQ0hC,EACRH,EAAOv/B,KAAK2/B,iBAAiB3hC,KAE7BuhC,EAAOG,EACP1hC,EAAQgC,KAAK4/B,cAAcL,OAGxBA,IAASvhC,MAIMuB,aAAamD,QAAQ1C,KAAK+K,SAAUmzB,aAAc,CACpElgC,QACAuhC,OACAt+B,cAAejB,KAAK05B,SAGNhrB,mBAKhB1O,KAAKk/B,eAAehhC,OAAOqhC,GACvBv/B,KAAKm/B,cAAgBI,IACvBv/B,KAAKm/B,YAAc,MAIrBI,EAAKthC,SACL+B,KAAKi/B,OAASj/B,KAAKi/B,OAAO16B,OAAOs7B,GAAKA,IAAM7hC,GAE5CuB,aAAamD,QAAQ1C,KAAK+K,SAAUqd,eAAc,CAChDtqB,OAAQkC,KAAKy/B,eAGR,GACT,CAEAK,iBACE,MAAMC,EAAgB,IAAI//B,KAAKk/B,gBAC/B,IAAK,MAAMK,KAAQQ,EACjB//B,KAAK/B,OAAOshC,GAGdv/B,KAAK05B,QAAQzgB,OACf,CAEAwmB,YACE,MAAO,IAAIz/B,KAAKi/B,OAClB,CAEAe,oBACE,MAAO,IAAIhgC,KAAKk/B,gBAAgBlzB,IAAIuzB,GAAQv/B,KAAK4/B,cAAcL,GACjE,CAEA5Z,QACE,MAAMsa,EAAQ9zB,eAAe3L,KAlKX,QAkK+BR,KAAK+K,UACtD,IAAK,MAAMw0B,KAAQU,EACjBV,EAAKthC,SAGP+B,KAAKi/B,OAAS,GACdj/B,KAAKk/B,eAAevZ,QACpB3lB,KAAKm/B,YAAc,KAEnB5/B,aAAamD,QAAQ1C,KAAK+K,SAAUqd,eAAc,CAChDtqB,OAAQ,IAEZ,CAEAoiC,iBACE,IAAK,MAAMX,KAAQv/B,KAAKk/B,eACtBK,EAAKj4B,UAAUrJ,OA7KK,UAgLtB+B,KAAKk/B,eAAevZ,QACpB3lB,KAAKm/B,YAAc,KAEnB5/B,aAAamD,QAAQ1C,KAAK+K,SAAUozB,aAAc,CAChD/hB,SAAU,IAEd,CAEA+jB,WAAWZ,EAAMa,EAAU,IACzB,MAAMC,eAAEA,GAAiB,EAAKC,YAAEA,GAAc,GAAUF,EAClDG,EAAevgC,KAAKwgC,mBAE1B,GAAKD,EAAav+B,SAASu9B,GAA3B,CAIA,GAAIe,GAAetgC,KAAKm/B,YAAa,CAEnC,MAAMsB,EAAcF,EAAal3B,QAAQrJ,KAAKm/B,aACxCuB,EAAYH,EAAal3B,QAAQk2B,GACjCoB,EAAQj7B,KAAK6D,IAAIk3B,EAAaC,GAC9B5D,EAAMp3B,KAAK4D,IAAIm3B,EAAaC,GAE7BL,GACHrgC,KAAKkgC,iBAGP,IAAK,IAAI3C,EAAIoD,EAAOpD,GAAKT,EAAKS,IAC5Bv9B,KAAKk/B,eAAe3rB,IAAIgtB,EAAahD,IACrCgD,EAAahD,GAAGj2B,UAAUiM,IA7MR,SA+MtB,MAAW8sB,EAELrgC,KAAKk/B,eAAe5hC,IAAIiiC,IAC1Bv/B,KAAKk/B,eAAehhC,OAAOqhC,GAC3BA,EAAKj4B,UAAUrJ,OAnNG,YAqNlB+B,KAAKk/B,eAAe3rB,IAAIgsB,GACxBA,EAAKj4B,UAAUiM,IAtNG,UAuNlBvT,KAAKm/B,YAAcI,IAIrBv/B,KAAKkgC,iBACLlgC,KAAKk/B,eAAe3rB,IAAIgsB,GACxBA,EAAKj4B,UAAUiM,IA7NK,UA8NpBvT,KAAKm/B,YAAcI,GAGrBhgC,aAAamD,QAAQ1C,KAAK+K,SAAUozB,aAAc,CAChD/hB,SAAUpc,KAAKggC,qBApCjB,CAsCF,CAEA/mB,QACEjZ,KAAK05B,QAAQzgB,OACf,CAGAunB,mBACE,OAAOr0B,eAAe3L,KAjPJ,QAiPwBR,KAAK+K,SACjD,CAEAq0B,eACE,MAAM5G,EAAQ3yB,SAAS6jB,cAAc,SACrC8O,EAAM/4B,KAAO,OACb+4B,EAAM9D,UAAY,aACd10B,KAAKgL,QAAQ4d,cACf4P,EAAM5P,YAAc5oB,KAAKgL,QAAQ4d,aAGnC5oB,KAAK+K,SAASqN,OAAOogB,GACrBx4B,KAAK05B,OAASlB,CAChB,CAEA6G,2BACE,MAAMuB,EAAgBz0B,eAAe3L,KAjQnB,QAiQuCR,KAAK+K,UAC9D,IAAK,MAAMw0B,KAAQqB,EAAe,CAChC,MAAM5iC,EAAQgC,KAAK4/B,cAAcL,GAC7BvhC,IACFgC,KAAKi/B,OAAOtyB,KAAK3O,GACjBgC,KAAK6gC,WAAWtB,GAEpB,CACF,CAEAsB,WAAWtB,GAETA,EAAKv7B,aAAa,WAAY,KAG1BhE,KAAKgL,QAAQ6zB,cAAgB1yB,eAAeE,QA/QtB,gBA+QqDkzB,IAC7EA,EAAKnnB,OAAOpY,KAAK8gC,uBAErB,CAEAtB,YAAYxhC,GACV,MAAMuhC,EAAO15B,SAAS6jB,cAAc,QAUpC,OATA6V,EAAK7K,UApRe,OAqRpB6K,EAAKj7B,QAAQy8B,YAAc/iC,EAG3BuhC,EAAKnnB,OAAOvS,SAASm7B,eAAehjC,IAGpCgC,KAAK6gC,WAAWtB,GAETA,CACT,CAEAuB,uBACE,MAAM5xB,EAASrJ,SAAS6jB,cAAc,UAMtC,OALAxa,EAAOzP,KAAO,SACdyP,EAAOwlB,UAlSqB,eAmS5BxlB,EAAOlL,aAAa,aAAc,UAClCkL,EAAOlL,aAAa,WAAY,MAChCkL,EAAOylB,UAAY30B,KAAKgL,QAAQ8zB,YACzB5vB,CACT,CAEAywB,iBAAiB3hC,GAEf,OADcgC,KAAKwgC,mBACNhgC,KAAK++B,GAAQv/B,KAAK4/B,cAAcL,KAAUvhC,EACzD,CAEA4hC,cAAcL,GACZ,GAAIA,EAAKj7B,QAAQy8B,YACf,OAAOxB,EAAKj7B,QAAQy8B,YAGtB,MAAMrsB,EAAQ6qB,EAAKtnB,WAAU,GACvBgpB,EAAU90B,eAAeE,QAvTL,gBAuToCqI,GAK9D,OAJIusB,GACFA,EAAQhjC,SAGHyW,EAAM6V,aAAaxe,QAAU,EACtC,CAEA6G,qBAEErT,aAAa0C,GAAGjC,KAAK05B,OAAQ,UAAWv6B,GAASa,KAAKkhC,oBAAoB/hC,IAC1EI,aAAa0C,GAAGjC,KAAK05B,OAAQ,QAASv6B,GAASa,KAAK29B,aAAax+B,IACjEI,aAAa0C,GAAGjC,KAAK05B,OAAQ,QAASv6B,GAASa,KAAKmhC,aAAahiC,IACjEI,aAAa0C,GAAGjC,KAAK05B,OAAQ,QAAS,IAAM15B,KAAKkgC,kBAE7ClgC,KAAKgL,QAAQ+zB,cACfx/B,aAAa0C,GAAGjC,KAAK05B,OAAQ,OAAQv6B,IAE9BA,EAAM8B,eAAegG,QA1UZ,UA2UZjH,KAAKohC,yBAMX7hC,aAAa0C,GAAGjC,KAAK+K,SAAU,QAjVb,QAiVqC5L,IAErD,GAAIA,EAAMY,OAAOkH,QAlVO,iBAmVtB,OAGF,MAAMs4B,EAAOpgC,EAAMY,OAAOkH,QAvVV,SAwVZs4B,IACFpgC,EAAMwO,iBACN3N,KAAKmgC,WAAWZ,EAAM,CACpBc,eAAgBlhC,EAAMkiC,SAAWliC,EAAMmiC,QACvChB,YAAanhC,EAAMoiC,WAErBhC,EAAKtmB,WAKT1Z,aAAa0C,GAAGjC,KAAK+K,SAAU,QAlWL,gBAkWqC5L,IAC7DA,EAAMwlB,kBACN,MAAM4a,EAAOpgC,EAAMY,OAAOkH,QArWV,SAsWZs4B,IACFv/B,KAAK/B,OAAOshC,GACZv/B,KAAK05B,QAAQzgB,WAKjB1Z,aAAa0C,GAAGjC,KAAK+K,SAAU,UA7Wb,QA6WuC5L,IACvDa,KAAKwhC,mBAAmBriC,KAI1BI,aAAa0C,GAAGjC,KAAK+K,SAAU,QAAS5L,IAClCA,EAAMY,SAAWC,KAAK+K,WACxB/K,KAAKkgC,iBACLlgC,KAAK05B,QAAQzgB,UAGnB,CAEAioB,oBAAoB/hC,GAClB,MAAM/B,IAAEA,GAAQ+B,EAEhB,OAAQ/B,GACN,IAAK,QACH+B,EAAMwO,iBACN3N,KAAKohC,uBACL,MAGF,IAAK,YACL,IAAK,SACH,GAA0B,KAAtBphC,KAAK05B,OAAO17B,MAAc,CAC5BmB,EAAMwO,iBACN,MAAMsyB,EAAQjgC,KAAKwgC,mBAEnB,GAAIP,EAAMx9B,OAAS,EAAG,CAEpB,MAAMg/B,EAAWxB,EAAMzY,IAAG,GAC1BxnB,KAAKmgC,WAAWsB,GAChBA,EAASxoB,OACX,CACF,CAEA,MAGF,IAAK,YACH,GAAmC,IAA/BjZ,KAAK05B,OAAOqE,gBAAqD,IAA7B/9B,KAAK05B,OAAOgI,aAAoB,CACtEviC,EAAMwO,iBACN,MAAMsyB,EAAQjgC,KAAKwgC,mBACnB,GAAIP,EAAMx9B,OAAS,EAAG,CACpB,MAAMg/B,EAAWxB,EAAMzY,IAAG,GACtBroB,EAAMoiC,SACRvhC,KAAKmgC,WAAWsB,EAAU,CAAEpB,gBAAgB,IAE5CrgC,KAAKmgC,WAAWsB,GAGlBA,EAASxoB,OACX,CACF,CAEA,MAGF,IAAK,SACHjZ,KAAK05B,OAAO17B,MAAQ,GACpBgC,KAAKkgC,iBACLlgC,KAAK05B,OAAOiI,OAMlB,CAEAH,mBAAmBriC,GACjB,MAAM/B,IAAEA,GAAQ+B,EACVogC,EAAOpgC,EAAMY,OAAOkH,QArbR,SAsblB,IAAKs4B,EACH,OAGF,MAAMU,EAAQjgC,KAAKwgC,mBACbvsB,EAAegsB,EAAM52B,QAAQk2B,GAEnC,OAAQniC,GACN,IAAK,YACL,IAAK,SACH+B,EAAMwO,iBACN3N,KAAK4hC,kBAAkB3tB,EAAcgsB,GACrC,MAGF,IAAK,YACH9gC,EAAMwO,iBACN3N,KAAK6hC,cAAc5B,EAAOhsB,GAAc,EAAI9U,EAAMoiC,UAClD,MAGF,IAAK,aACHpiC,EAAMwO,iBACN3N,KAAK6hC,cAAc5B,EAAOhsB,EAAc,EAAG9U,EAAMoiC,UACjD,MAGF,IAAK,OACHpiC,EAAMwO,iBACN3N,KAAK8hC,gBAAgB7B,EAAO,EAAG9gC,EAAMoiC,UACrC,MAGF,IAAK,MAYL,IAAK,SACHpiC,EAAMwO,iBACN3N,KAAKkgC,iBACLlgC,KAAK05B,QAAQzgB,QACb,MATF,IAAK,IACHjZ,KAAK+hC,iBAAiB5iC,EAAO8gC,GAanC,CAEA2B,kBAAkB3tB,EAAcgsB,GAC9B,GAAiC,IAA7BjgC,KAAKk/B,eAAezhC,KACtB,OAGF,MAAMukC,EAAYt8B,KAAK6D,IAAI0K,EAAcgsB,EAAMx9B,OAASzC,KAAKk/B,eAAezhC,KAAO,GACnFuC,KAAK8/B,iBAEL,MAAMmC,EAAiBjiC,KAAKwgC,mBAC5B,GAAIyB,EAAex/B,OAAS,EAAG,CAC7B,MAAMy/B,EAAax8B,KAAK4D,IAAI,EAAG5D,KAAK6D,IAAIy4B,EAAWC,EAAex/B,OAAS,IAC3Ew/B,EAAeC,GAAYjpB,QAC3BjZ,KAAKmgC,WAAW8B,EAAeC,GACjC,MACEliC,KAAK05B,QAAQzgB,OAEjB,CAEA4oB,cAAc5B,EAAOhsB,EAAcC,EAAWqtB,GAC5C,MAAMxtB,EAAcE,EAAeC,EAEnC,GAAIA,EAAY,GAAKH,GAAe,EAAG,CACrC,MAAMouB,EAAalC,EAAMlsB,GACzB/T,KAAKmgC,WAAWgC,EAAYZ,EAAW,CAAElB,gBAAgB,EAAMC,aAAa,GAAS,IACrF6B,EAAWlpB,OACb,MAAO,GAAI/E,EAAY,GAAKH,EAAcksB,EAAMx9B,OAAQ,CACtD,MAAM0/B,EAAalC,EAAMlsB,GACzB/T,KAAKmgC,WAAWgC,EAAYZ,EAAW,CAAElB,gBAAgB,EAAMC,aAAa,GAAS,IACrF6B,EAAWlpB,OACb,MAAW/E,EAAY,IACrBlU,KAAKkgC,iBACLlgC,KAAK05B,QAAQzgB,QAEjB,CAEA6oB,gBAAgB7B,EAAOlsB,EAAawtB,GAClC,GAAqB,IAAjBtB,EAAMx9B,OACR,OAGF,MAAM0/B,EAAalC,EAAMlsB,GACzB/T,KAAKmgC,WAAWgC,EAAYZ,EAAW,CAAEjB,aAAa,GAAS,IAC/D6B,EAAWlpB,OACb,CAEA8oB,iBAAiB5iC,EAAO8gC,GACtB,GAAM9gC,EAAMkiC,SAAWliC,EAAMmiC,QAA7B,CAIAniC,EAAMwO,iBACN,IAAK,MAAMy0B,KAAKnC,EACdjgC,KAAKk/B,eAAe3rB,IAAI6uB,GACxBA,EAAE96B,UAAUiM,IA9hBQ,UAiiBtBhU,aAAamD,QAAQ1C,KAAK+K,SAAUozB,aAAc,CAChD/hB,SAAUpc,KAAKggC,qBATjB,CAWF,CAEArC,aAAax+B,GACX,MAAMnB,MAAEA,GAAUmB,EAAMY,QAClB6vB,UAAEA,GAAc5vB,KAAKgL,QAE3B,GAAI4kB,GAAa5xB,EAAMgE,SAAS4tB,GAAY,CAC1C,MAAM7S,EAAQ/e,EAAMsI,MAAMspB,GAC1B,IAAK,MAAM1S,KAAQH,EAAMxa,MAAM,GAAG,GAChCvC,KAAKuT,IAAI2J,EAAKnR,QAGhB/L,KAAK05B,OAAO17B,MAAQ+e,EAAMyK,IAAG,EAC/B,CACF,CAEA2Z,aAAahiC,GACX,MAAMywB,UAAEA,GAAc5vB,KAAKgL,QAC3B,IAAK4kB,EACH,OAGF,MAAMyS,GAAcljC,EAAMmjC,eAAiBt9B,OAAOs9B,eAAeC,QAAQ,QACzE,GAAIF,EAAWrgC,SAAS4tB,GAAY,CAClCzwB,EAAMwO,iBAEN,MAAMoP,EAAQslB,EAAW/7B,MAAMspB,GAC/B,IAAK,MAAM1S,KAAQH,EACjB/c,KAAKuT,IAAI2J,EAAKnR,OAElB,CACF,CAEAq1B,uBACE,MAAMpjC,EAAQgC,KAAK05B,OAAO17B,MAAM+N,OAC5B/N,IACFgC,KAAKuT,IAAIvV,GACTgC,KAAK05B,OAAO17B,MAAQ,GAExB,EAOFuB,aAAa0C,GAAG4D,SAAU,qCAA+C,KACvE,IAAK,MAAM1I,KAAWgP,eAAe3L,KA1lBX,mBA2lBxBw+B,MAAMtzB,oBAAoBvO,KC5mB9B,MAAMqlC,uBAAyB,iBAElBC,iBAAmB,CAE9B,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQD,wBAC5CE,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,GAAI,GACJC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJpG,EAAG,GACHqG,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLvL,OAAQ,GACRwL,EAAG,GACHC,GAAI,IAIAC,cAAgB,IAAI5lC,IAAI,CAC5B,aACA,OACA,OACA,WACA,WACA,SACA,MACA,eASI6lC,iBAAmB,0DAEnBC,iBAAmBA,CAACC,EAAWC,KACnC,MAAMC,EAAgBF,EAAUG,SAASjhC,cAEzC,OAAI+gC,EAAqB5iC,SAAS6iC,IAC5BL,cAAclnC,IAAIunC,IACbnjC,QAAQ+iC,iBAAiBh6B,KAAKk6B,EAAUI,YAO5CH,EAAqBrgC,OAAOygC,GAAkBA,aAA0Bx6B,QAC5Ey6B,KAAKC,GAASA,EAAMz6B,KAAKo6B,KAGvB,SAASM,aAAaC,EAAYC,EAAWC,GAClD,IAAKF,EAAW3iC,OACd,OAAO2iC,EAGT,GAAIE,GAAgD,mBAArBA,EAC7B,OAAOA,EAAiBF,GAG1B,MACMG,GADY,IAAIvgC,OAAOwgC,WACKC,gBAAgBL,EAAY,aACxDM,EAAW,IAAIH,EAAgB9jB,KAAK3hB,iBAAiB,MAE3D,IAAK,MAAM3C,KAAWuoC,EAAU,CAC9B,MAAMC,EAAcxoC,EAAQ2nC,SAASjhC,cAErC,IAAKtD,OAAO3C,KAAKynC,GAAWrjC,SAAS2jC,GAAc,CACjDxoC,EAAQc,SACR,QACF,CAEA,MAAM2nC,EAAgB,IAAIzoC,EAAQiH,YAC5ByhC,EAAoB,IAAKR,EAAU,MAAQ,MAASA,EAAUM,IAAgB,IAEpF,IAAK,MAAMhB,KAAaiB,EACjBlB,iBAAiBC,EAAWkB,IAC/B1oC,EAAQ+G,gBAAgBygC,EAAUG,SAGxC,CAEA,OAAOS,EAAgB9jB,KAAKkT,SAC9B,CCnGA,MAAMhrB,OAAO,kBAEPF,UAAU,CACd47B,UAAW5C,iBACXqD,QAAS,GACTC,WAAY,GACZC,MAAM,EACNC,UAAU,EACVC,WAAY,KACZC,SAAU,eAGNz8B,cAAc,CAClB27B,UAAW,SACXS,QAAS,SACTC,WAAY,oBACZC,KAAM,UACNC,SAAU,UACVC,WAAY,kBACZC,SAAU,UAGNC,mBAAqB,CACzB9wB,MAAO,iCACP1V,SAAU,oBAOZ,MAAMymC,wBAAwB78B,OAC5BW,YAAYL,GACVgB,QACA9K,KAAKgL,QAAUhL,KAAK6J,WAAWC,EACjC,CAGA,kBAAWL,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGA28B,aACE,OAAO/lC,OAAOzC,OAAOkC,KAAKgL,QAAQ86B,SAC/B95B,IAAIlC,GAAU9J,KAAKumC,yBAAyBz8B,IAC5CvF,OAAO7C,QACZ,CAEA8kC,aACE,OAAOxmC,KAAKsmC,aAAa7jC,OAAS,CACpC,CAEAgkC,cAAcX,GAGZ,OAFA9lC,KAAK0mC,cAAcZ,GACnB9lC,KAAKgL,QAAQ86B,QAAU,IAAK9lC,KAAKgL,QAAQ86B,WAAYA,GAC9C9lC,IACT,CAEA2mC,SACE,MAAMC,EAAkB/gC,SAAS6jB,cAAc,OAC/Ckd,EAAgBjS,UAAY30B,KAAK6mC,eAAe7mC,KAAKgL,QAAQm7B,UAE7D,IAAK,MAAOvmC,EAAUgrB,KAASrqB,OAAOwB,QAAQ/B,KAAKgL,QAAQ86B,SACzD9lC,KAAK8mC,YAAYF,EAAiBhc,EAAMhrB,GAG1C,MAAMumC,EAAWS,EAAgBt6B,SAAS,GACpCy5B,EAAa/lC,KAAKumC,yBAAyBvmC,KAAKgL,QAAQ+6B,YAM9D,OAJIA,GACFI,EAAS7+B,UAAUiM,OAAOwyB,EAAWz/B,MAAM,MAGtC6/B,CACT,CAGAl8B,iBAAiBH,GACfgB,MAAMb,iBAAiBH,GACvB9J,KAAK0mC,cAAc58B,EAAOg8B,QAC5B,CAEAY,cAAcK,GACZ,IAAK,MAAOnnC,EAAUkmC,KAAYvlC,OAAOwB,QAAQglC,GAC/Cj8B,MAAMb,iBAAiB,CAAErK,WAAU0V,MAAOwwB,GAAWM,mBAEzD,CAEAU,YAAYX,EAAUL,EAASlmC,GAC7B,MAAMonC,EAAkB76B,eAAeE,QAAQzM,EAAUumC,GAEpDa,KAILlB,EAAU9lC,KAAKumC,yBAAyBT,IAOpCt/B,UAAUs/B,GACZ9lC,KAAKinC,sBAAsBvgC,WAAWo/B,GAAUkB,GAI9ChnC,KAAKgL,QAAQg7B,KACfgB,EAAgBrS,UAAY30B,KAAK6mC,eAAef,GAIlDkB,EAAgBzc,YAAcub,EAd5BkB,EAAgB/oC,SAepB,CAEA4oC,eAAeE,GACb,OAAO/mC,KAAKgL,QAAQi7B,SAAWd,aAAa4B,EAAK/mC,KAAKgL,QAAQq6B,UAAWrlC,KAAKgL,QAAQk7B,YAAca,CACtG,CAEAR,yBAAyBQ,GACvB,OAAO3+B,QAAQ2+B,EAAK,MAAC1pB,EAAWrd,MAClC,CAEAinC,sBAAsB9pC,EAAS6pC,GAC7B,GAAIhnC,KAAKgL,QAAQg7B,KAGf,OAFAgB,EAAgBrS,UAAY,QAC5BqS,EAAgB5uB,OAAOjb,GAIzB6pC,EAAgBzc,YAAcptB,EAAQotB,WACxC,EC1HF,MAAM5gB,OAAO,UACPu9B,sBAAwB,IAAItoC,IAAI,CAAC,WAAY,YAAa,eAE1Dqf,WAAa,SAEb3P,kBAAkB,OAClB64B,iBAAmB,QACnB54B,kBAAkB,OAElB64B,uBAAyB,iBACzBC,eAAiB,SACjBv4B,uBAAuB,6BAEvBw4B,iBAAmB,gBAEnBC,cAAgB,QAChBC,cAAgB,QAChBC,cAAgB,QAChBC,eAAiB,SAEjBptB,aAAa,OACbC,eAAe,SACfH,aAAa,OACbC,cAAc,QACdstB,eAAiB,WACjBC,cAAc,QACdC,gBAAgB,UAChBC,iBAAiB,WACjBp4B,mBAAmB,aACnBC,iBAAmB,aACnBF,gBAAgB,UAEhBs4B,cAAgB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAOhgC,QAAU,OAAS,QAC1BigC,OAAQ,SACRC,KAAMlgC,QAAU,QAAU,QAGtBuB,UAAU,CACd47B,UAAW5C,iBACX4F,WAAW,EACXzoB,SAAU,kBACVC,WAAW,EACXyoB,YAAa,GACbC,MAAO,EACPllB,mBAAoB,CAAC,MAAO,QAAS,SAAU,QAC/C2iB,MAAM,EACNjmB,OAAQ,CAAC,EAAG,GACZ3C,UAAW,MACX4C,eAAgB,KAChBimB,UAAU,EACVC,WAAY,KACZtmC,UAAU,EACVumC,SAAU,+GAIVqC,MAAO,GACP9lC,QAAS,eAGLgH,cAAc,CAClB27B,UAAW,SACXgD,UAAW,UACXzoB,SAAU,mBACVC,UAAW,2BACXyoB,YAAa,oBACbC,MAAO,kBACPllB,mBAAoB,QACpB2iB,KAAM,UACNjmB,OAAQ,0BACR3C,UAAW,oBACX4C,eAAgB,yBAChBimB,SAAU,UACVC,WAAY,kBACZtmC,SAAU,mBACVumC,SAAU,SACVqC,MAAO,4BACP9lC,QAAS,UAOX,MAAM+lC,gBAAgB59B,cACpBV,YAAYhN,EAAS2M,GACnB,QAA+B,IAApB0W,gBACT,MAAM,IAAI9V,UAAU,sEAGtBI,MAAM3N,EAAS2M,GAGf9J,KAAK0oC,YAAa,EAClB1oC,KAAK2oC,SAAW,EAChB3oC,KAAK4oC,WAAa,KAClB5oC,KAAK6oC,eAAiB,GACtB7oC,KAAKygB,iBAAmB,KACxBzgB,KAAK8oC,gBAAkB,KACvB9oC,KAAK+oC,iBAAmB,KACxB/oC,KAAKgpC,YAAc,KACnBhpC,KAAK0gB,qBAAuB,GAC5B1gB,KAAK2gB,sBAAwB,KAG7B3gB,KAAKipC,IAAM,KAEXjpC,KAAKqhB,6BACLrhB,KAAKkpC,gBAEAlpC,KAAKgL,QAAQpL,UAChBI,KAAKmpC,WAET,CAGA,kBAAW1/B,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAy/B,SACEppC,KAAK0oC,YAAa,CACpB,CAEAW,UACErpC,KAAK0oC,YAAa,CACpB,CAEAY,gBACEtpC,KAAK0oC,YAAc1oC,KAAK0oC,UAC1B,CAEAz5B,SACOjP,KAAK0oC,aAIN1oC,KAAK0b,WACP1b,KAAKupC,SAIPvpC,KAAKwpC,SACP,CAEAr+B,UACE6O,aAAaha,KAAK2oC,UAElB3oC,KAAKypC,wBAELlqC,aAAaC,IAAIQ,KAAK+K,SAAS9D,QAxJZ,UAGE,gBAqJqDjH,KAAK0pC,mBAE3E1pC,KAAK+K,SAASpG,aAAa,2BAC7B3E,KAAK+K,SAAS/G,aAAa,QAAShE,KAAK+K,SAASpG,aAAa,2BAGjE3E,KAAK6hB,mBACL7hB,KAAK+hB,8BACLjX,MAAMK,SACR,CAEA,UAAMyQ,GACJ,GAAoC,SAAhC5b,KAAK+K,SAAS4J,MAAMmL,QACtB,MAAM,IAAIlW,MAAM,uCAGlB,IAAM5J,KAAK2pC,mBAAoB3pC,KAAK0oC,WAClC,OAGF,MAAMzW,EAAY1yB,aAAamD,QAAQ1C,KAAK+K,SAAU/K,KAAKmK,YAAYwB,UAhKxD,SAkKTi+B,GADaniC,eAAezH,KAAK+K,WACL/K,KAAK+K,SAAS8+B,cAAcniC,iBAAiBxG,SAASlB,KAAK+K,UAE7F,GAAIknB,EAAUvjB,mBAAqBk7B,EACjC,OAGF5pC,KAAK6hB,mBAEL,MAAMonB,EAAMjpC,KAAK8pC,iBAEjB9pC,KAAK+K,SAAS/G,aAAa,mBAAoBilC,EAAItkC,aAAa,OAEhE,IAAIkb,UAAEA,GAAc7f,KAAKgL,QACzB,MAAM++B,EAAgB/pC,KAAK+K,SAAS9D,QAAQ,gBAqB5C,GApBI8iC,GAAiBlqB,IAAcha,SAAS4b,OAC1C5B,EAAYkqB,GAGT/pC,KAAK+K,SAAS8+B,cAAcniC,gBAAgBxG,SAASlB,KAAKipC,OAC7DppB,EAAUzH,OAAO6wB,GACjB1pC,aAAamD,QAAQ1C,KAAK+K,SAAU/K,KAAKmK,YAAYwB,UApLpC,oBAuLb3L,KAAKwhB,gBAAgBynB,GAE3BA,EAAI3hC,UAAUiM,IA1MM,QA6MpBvT,KAAKgqC,qBAMD,iBAAkBnkC,SAAS6B,gBAC7B,IAAK,MAAMvK,KAAW0I,SAAS4b,KAAKnV,SAClC/M,aAAa0C,GAAG9E,EAAS,YAAa4K,MAc1C/H,KAAKuL,eAVY4Q,KACf5c,aAAamD,QAAQ1C,KAAK+K,SAAU/K,KAAKmK,YAAYwB,UA1MvC,WA4MU,IAApB3L,KAAK4oC,YACP5oC,KAAKupC,SAGPvpC,KAAK4oC,YAAa,GAGU5oC,KAAKipC,IAAKjpC,KAAK6wB,cAC/C,CAEAlV,OACE,GAAK3b,KAAK0b,aAIQnc,aAAamD,QAAQ1C,KAAK+K,SAAU/K,KAAKmK,YAAYwB,UA9NxD,SA+ND+C,iBAAd,CAWA,GAPA1O,KAAKypC,wBAEOzpC,KAAK8pC,iBACbxiC,UAAUrJ,OAnPM,QAuPhB,iBAAkB4H,SAAS6B,gBAC7B,IAAK,MAAMvK,KAAW0I,SAAS4b,KAAKnV,SAClC/M,aAAaC,IAAIrC,EAAS,YAAa4K,MAI3C/H,KAAK6oC,eAA4B,OAAI,EACrC7oC,KAAK6oC,eAA4B,OAAI,EACrC7oC,KAAK6oC,eAA4B,OAAI,EACrC7oC,KAAK4oC,WAAa,KAelB5oC,KAAKuL,eAbY4Q,KACXnc,KAAKiqC,yBAIJjqC,KAAK4oC,YACR5oC,KAAK6hB,mBAGP7hB,KAAK+K,SAAS7G,gBAAgB,oBAC9B3E,aAAamD,QAAQ1C,KAAK+K,SAAU/K,KAAKmK,YAAYwB,UA9PtC,aAiQa3L,KAAKipC,IAAKjpC,KAAK6wB,cAjC7C,CAkCF,CAEA3O,SACMliB,KAAKygB,kBAAoBzgB,KAAKipC,KAChCjpC,KAAKmiB,yBAET,CAGAwnB,iBACE,OAAOjoC,QAAQ1B,KAAKkqC,YACtB,CAEAJ,iBAKE,OAJK9pC,KAAKipC,MACRjpC,KAAKipC,IAAMjpC,KAAKmqC,kBAAkBnqC,KAAKgpC,aAAehpC,KAAKoqC,2BAGtDpqC,KAAKipC,GACd,CAEAkB,kBAAkBrE,GAChB,MAAMmD,EAAMjpC,KAAKqqC,oBAAoBvE,GAASa,SAE9CsC,EAAI3hC,UAAUrJ,OA1SM,OAEA,QAySpBgrC,EAAI3hC,UAAUiM,IAAI,MAAMvT,KAAKmK,YAAYR,aAEzC,MAAM2gC,EAAQ9kC,OAAOxF,KAAKmK,YAAYR,MAAMpG,WAQ5C,OANA0lC,EAAIjlC,aAAa,KAAMsmC,GAEnBtqC,KAAK6wB,eACPoY,EAAI3hC,UAAUiM,IAlTI,QAqTb01B,CACT,CAEAsB,WAAWzE,GACT9lC,KAAKgpC,YAAclD,EACf9lC,KAAK0b,aACP1b,KAAK6hB,mBACL7hB,KAAK4b,OAET,CAEAyuB,oBAAoBvE,GAalB,OAZI9lC,KAAK+oC,iBACP/oC,KAAK+oC,iBAAiBtC,cAAcX,GAEpC9lC,KAAK+oC,iBAAmB,IAAI1C,gBAAgB,IACvCrmC,KAAKgL,QAGR86B,UACAC,WAAY/lC,KAAKumC,yBAAyBvmC,KAAKgL,QAAQs9B,eAIpDtoC,KAAK+oC,gBACd,CAEAqB,yBACE,MAAO,CACLhD,CAACA,wBAAyBpnC,KAAKkqC,YAEnC,CAEAA,YACE,OAAOlqC,KAAKumC,yBAAyBvmC,KAAKgL,QAAQw9B,QAAUxoC,KAAK+K,SAASpG,aAAa,yBACzF,CAGA6lC,6BAA6BrrC,GAC3B,OAAOa,KAAKmK,YAAYuB,oBAAoBvM,EAAME,eAAgBW,KAAKyqC,qBACzE,CAEA5Z,cACE,OAAO7wB,KAAKgL,QAAQq9B,WAAcroC,KAAKipC,KAAOjpC,KAAKipC,IAAI3hC,UAAUpG,SAhW7C,OAiWtB,CAEAwa,WACE,OAAO1b,KAAKipC,KAAOjpC,KAAKipC,IAAI3hC,UAAUpG,SAlWlB,OAmWtB,CAEAqhB,cAAc0mB,GAEZ,GAAIjpC,KAAK2gB,sBAAuB,CAC9B,MAAMvD,EAAYE,uBAAuBtd,KAAK2gB,sBAAuB,OACrE,OAAOonB,cAAc3qB,EAAUzS,gBAAkByS,CACnD,CAGA,MAAMA,EAAYhV,QAAQpI,KAAKgL,QAAQoS,UAAW,CAACpd,KAAMipC,EAAKjpC,KAAK+K,WACnE,OAAOg9B,cAAc3qB,EAAUzS,gBAAkByS,CACnD,CAEAiE,6BAEwC,iBAA3BrhB,KAAKgL,QAAQoS,WAKxBpd,KAAK2gB,sBAAwB/D,yBAAyB5c,KAAKgL,QAAQoS,UAAW,OAE1Epd,KAAK2gB,uBACP3gB,KAAK4iB,6BAPL5iB,KAAK2gB,sBAAwB,IASjC,CAEAiC,4BACE5iB,KAAK+hB,8BACL/hB,KAAK0gB,qBAAuB9C,0BAA0B,KAChD5d,KAAK0b,YACP1b,KAAKmiB,2BAGX,CAEAJ,8BACE/D,2BAA2Bhe,KAAK0gB,sBAChC1gB,KAAK0gB,qBAAuB,EAC9B,CAEA,qBAAMc,CAAgBynB,GACpB,MAAM7rB,EAAYpd,KAAKuiB,cAAc0mB,GAC/ByB,EAAezB,EAAItiC,cAAc,IAAI3G,KAAKmK,YAAYR,oBAGtD3J,KAAKmiB,wBAAwB8mB,EAAK7rB,EAAWstB,GAGnD1qC,KAAKygB,iBAAmB6B,WACtBtiB,KAAK+K,SACLk+B,EACA,IAAMjpC,KAAKmiB,wBAAwB8mB,EAAK,KAAMyB,GAElD,CAEA,6BAAMvoB,CAAwB8mB,EAAMjpC,KAAKipC,IAAK7rB,EAAY,KAAMstB,EAAe,MAC7E,IAAKzB,EACH,OAGG7rB,IACHA,EAAYpd,KAAKuiB,cAAc0mB,IAG5ByB,IACHA,EAAezB,EAAItiC,cAAc,IAAI3G,KAAKmK,YAAYR,eAGxD,MAAM6Y,EAAaxiB,KAAKyiB,uBAAuBioB,GACzC1qB,EAAiBhgB,KAAK0iB,mBAAmBtF,EAAWoF,IAEpD/C,EAAEA,EAACC,EAAEA,EAAGtC,UAAWwG,EAAc+mB,eAAEA,SAAyBnqB,gBAChExgB,KAAK+K,SACLk+B,EACAjpB,GAoBF,GAhBAzf,OAAOsjB,OAAOolB,EAAIt0B,MAAO,CACvBmP,SAAU,WACVtN,KAAM,GAAGiJ,MACTjH,IAAK,GAAGkH,QAINgrB,IACFA,EAAa/1B,MAAMmP,SAAW,YAIhChgB,YAAYC,iBAAiBklC,EAAK,YAAarlB,GAI3C8mB,GAAgBC,EAAeC,MAAO,CACxC,MAAQnrB,EAAGorB,EAAQnrB,EAAGorB,GAAWH,EAAeC,MAC1CG,EAAannB,EAAevhB,WAAW,QAAUuhB,EAAevhB,WAAW,UAIjF9B,OAAOsjB,OAAO6mB,EAAa/1B,MAAO,CAChC6B,KAAMu0B,GAAyB,OAAXF,EAAkB,GAAGA,MAAa,GACtDryB,IAAMuyB,GAAyB,OAAXD,EAAkC,GAAhB,GAAGA,MAEzCnzB,MAAO,GACP6L,OAAQ,IAEZ,CACF,CAEAX,aACE,MAAM9C,OAAEA,GAAW/f,KAAKgL,QAExB,MAAsB,iBAAX+U,EACFA,EAAOzZ,MAAM,KAAK0F,IAAIhO,GAASsF,OAAOqQ,SAAS3V,EAAO,KAGzC,mBAAX+hB,EAEF,EAAG3C,YAAW2F,WACJhD,EAAO,CAAE3C,YAAW8C,UAAW6C,EAAM7C,UAAW8C,SAAUD,EAAMC,UAAYhjB,KAAK+K,UAK7FgV,CACT,CAEAwmB,yBAAyBQ,GACvB,OAAO3+B,QAAQ2+B,EAAK,CAAC/mC,KAAK+K,SAAU/K,KAAK+K,UAC3C,CAEA0X,uBAAuBioB,GACrB,MAAMznB,EAAcjjB,KAAK6iB,aAEnBL,EAAa,CAEjBzC,OACyB,mBAAhBkD,EACLA,EACA,CAAEC,SAAUD,EAAY,IAAM,EAAGE,UAAWF,EAAY,IAAM,IAGlEG,KAAK,CACHC,mBAAoBrjB,KAAKgL,QAAQqY,qBAGnCE,MAAM,CACJ3D,SAAoC,oBAA1B5f,KAAKgL,QAAQ4U,SAAiC,oBAAsB5f,KAAKgL,QAAQ4U,YAS/F,OAJI8qB,GACFloB,EAAW7V,KAAKi+B,MAAM,CAAEztC,QAASutC,KAG5BloB,CACT,CAEAE,mBAAmBtF,EAAWoF,GAC5B,MAAMiB,EAAgB,CACpBrG,YACAoF,cAGF,MAAO,IACFiB,KACArb,QAAQpI,KAAKgL,QAAQgV,eAAgB,MAAC3C,EAAWoG,IAExD,CAEAylB,gBACE,MAAM8B,EAAWhrC,KAAKgL,QAAQtI,QAAQ4D,MAAM,KAE5C,IAAK,MAAM5D,KAAWsoC,EACpB,GAAgB,UAAZtoC,EACFnD,aAAa0C,GAAGjC,KAAK+K,SAAU/K,KAAKmK,YAAYwB,UApgBpC,SAogB4D3L,KAAKgL,QAAQpL,SAAUT,IAC7F,MAAMmtB,EAAUtsB,KAAKwqC,6BAA6BrrC,GAClDmtB,EAAQuc,eAA4B,QAAMvc,EAAQ5Q,YAAc4Q,EAAQuc,eAA4B,OACpGvc,EAAQrd,gBAEL,GAhhBU,WAghBNvM,EAA4B,CACrC,MAAMuoC,EAphBQ,UAohBEvoC,EACd1C,KAAKmK,YAAYwB,UAxgBF,cAygBf3L,KAAKmK,YAAYwB,UA3gBL,WA4gBRu/B,EAvhBQ,UAuhBGxoC,EACf1C,KAAKmK,YAAYwB,UA1gBF,cA2gBf3L,KAAKmK,YAAYwB,UA7gBJ,YA+gBfpM,aAAa0C,GAAGjC,KAAK+K,SAAUkgC,EAASjrC,KAAKgL,QAAQpL,SAAUT,IAC7D,MAAMmtB,EAAUtsB,KAAKwqC,6BAA6BrrC,GAClDmtB,EAAQuc,eAA8B,YAAf1pC,EAAMM,KA5hBjB,QADA,UA6hBuE,EACnF6sB,EAAQkd,WAEVjqC,aAAa0C,GAAGjC,KAAK+K,SAAUmgC,EAAUlrC,KAAKgL,QAAQpL,SAAUT,IAC9D,MAAMmtB,EAAUtsB,KAAKwqC,6BAA6BrrC,GAClDmtB,EAAQuc,eAA8B,aAAf1pC,EAAMM,KAjiBjB,QADA,SAmiBV6sB,EAAQvhB,SAAS7J,SAAS/B,EAAM8B,eAElCqrB,EAAQid,UAEZ,CAGFvpC,KAAK0pC,kBAAoB,KACnB1pC,KAAK+K,UACP/K,KAAK2b,QAITpc,aAAa0C,GAAGjC,KAAK+K,SAAS9D,QArjBX,UAGE,gBAkjBoDjH,KAAK0pC,kBAChF,CAEAM,qBACMhqC,KAAK8oC,kBAIT9oC,KAAK8oC,gBAAkB3pC,IApkBR,WAqkBTA,EAAM/B,KAAuB4C,KAAK0b,YAAe1b,KAAKipC,IAAItlB,cAQ9DxkB,EAAMwO,iBACNxO,EAAMwlB,kBACN3kB,KAAK2b,SAOP3b,KAAK+K,SAAS8+B,cAActoC,iBA3jBV,UA2jB0CvB,KAAK8oC,iBAAiB,GACpF,CAEAW,wBACOzpC,KAAK8oC,kBAIV9oC,KAAK+K,SAAS8+B,cAAcpoC,oBAnkBV,UAmkB6CzB,KAAK8oC,iBAAiB,GACrF9oC,KAAK8oC,gBAAkB,KACzB,CAEAK,YACE,MAAMX,EAAQxoC,KAAK+K,SAASpG,aAAa,SAEpC6jC,IAIAxoC,KAAK+K,SAASpG,aAAa,eAAkB3E,KAAK+K,SAASwf,YAAYxe,QAC1E/L,KAAK+K,SAAS/G,aAAa,aAAcwkC,GAG3CxoC,KAAK+K,SAAS/G,aAAa,yBAA0BwkC,GACrDxoC,KAAK+K,SAAS7G,gBAAgB,SAChC,CAEAslC,SACMxpC,KAAK0b,YAAc1b,KAAK4oC,WAC1B5oC,KAAK4oC,YAAa,GAIpB5oC,KAAK4oC,YAAa,EAElB5oC,KAAKmrC,YAAY,KACXnrC,KAAK4oC,YACP5oC,KAAK4b,QAEN5b,KAAKgL,QAAQu9B,MAAM3sB,MACxB,CAEA2tB,SACMvpC,KAAKiqC,yBAITjqC,KAAK4oC,YAAa,EAElB5oC,KAAKmrC,YAAY,KACVnrC,KAAK4oC,YACR5oC,KAAK2b,QAEN3b,KAAKgL,QAAQu9B,MAAM5sB,MACxB,CAEAwvB,YAAYjsC,EAASksC,GACnBpxB,aAAaha,KAAK2oC,UAClB3oC,KAAK2oC,SAAW9/B,WAAW3J,EAASksC,EACtC,CAEAnB,uBACE,OAAO1pC,OAAOzC,OAAOkC,KAAK6oC,gBAAgB7mC,UAAS,EACrD,CAEA6H,WAAWC,GACT,MAAMuhC,EAAiBvnC,YAAYK,kBAAkBnE,KAAK+K,UAE1D,IAAK,MAAMugC,KAAiB/qC,OAAO3C,KAAKytC,GAClCnE,sBAAsB5pC,IAAIguC,WACrBD,EAAeC,GAW1B,OAPAxhC,EAAS,IACJuhC,KACmB,iBAAXvhC,GAAuBA,EAASA,EAAS,IAEtDA,EAAS9J,KAAK+J,gBAAgBD,GAC9BA,EAAS9J,KAAKgK,kBAAkBF,GAChC9J,KAAKiK,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAkBhB,OAjBAA,EAAO+V,WAAiC,IAArB/V,EAAO+V,UAAsBha,SAAS4b,KAAO/a,WAAWoD,EAAO+V,WAEtD,iBAAjB/V,EAAOy+B,QAChBz+B,EAAOy+B,MAAQ,CACb3sB,KAAM9R,EAAOy+B,MACb5sB,KAAM7R,EAAOy+B,QAIW,iBAAjBz+B,EAAO0+B,QAChB1+B,EAAO0+B,MAAQ1+B,EAAO0+B,MAAMjlC,YAGA,iBAAnBuG,EAAOg8B,UAChBh8B,EAAOg8B,QAAUh8B,EAAOg8B,QAAQviC,YAG3BuG,CACT,CAEA2gC,qBACE,MAAM3gC,EAAS,GAEf,IAAK,MAAO1M,EAAKY,KAAUuC,OAAOwB,QAAQ/B,KAAKgL,SACzChL,KAAKmK,YAAYV,QAAQrM,KAASY,IACpC8L,EAAO1M,GAAOY,GAUlB,OANA8L,EAAOlK,UAAW,EAClBkK,EAAOpH,QAAU,SAKVoH,CACT,CAEA+X,mBACM7hB,KAAKygB,mBACPzgB,KAAKygB,mBACLzgB,KAAKygB,iBAAmB,MAGtBzgB,KAAKipC,MACPjpC,KAAKipC,IAAIhrC,SACT+B,KAAKipC,IAAM,KAEf,EAOF,MAAMsC,YAAcpsC,IAClB,MAAMY,EAASZ,EAAMY,OAAOkH,QAAQ6H,wBAC/B/O,GAWL0oC,QAAQ/8B,oBAAoB3L,IAI9BR,aAAa0C,GAAG4D,SA5tBM,UA4tBmBiJ,uBAAsBy8B,aAC/DhsC,aAAa0C,GAAG4D,SA3tBS,aA2tBmBiJ,uBAAsBy8B,aC3wBlE,MAAM5hC,OAAO,UAEP6hC,eAAiB,kBACjBC,iBAAmB,gBACnB38B,uBAAuB,6BAEvB84B,cAAc,QACdC,gBAAgB,UAChBn4B,iBAAmB,aAEnBjG,UAAU,IACXg/B,QAAQh/B,QACXq8B,QAAS,GACT/lB,OAAQ,CAAC,EAAG,GACZ3C,UAAW,QACX+oB,SAAU,8IAKVzjC,QAAS,SAGLgH,cAAc,IACf++B,QAAQ/+B,YACXo8B,QAAS,kCAOX,MAAM4F,gBAAgBjD,QAEpB,kBAAWh/B,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAggC,iBACE,OAAO3pC,KAAKkqC,aAAelqC,KAAK2rC,aAClC,CAGAvB,yBACE,MAAO,CACLoB,CAACA,gBAAiBxrC,KAAKkqC,YACvBuB,CAACA,kBAAmBzrC,KAAK2rC,cAE7B,CAEAA,cACE,OAAO3rC,KAAKumC,yBAAyBvmC,KAAKgL,QAAQ86B,QACpD,EAOF,MAAM8F,YAAczsC,IAClB,MAAMY,EAASZ,EAAMY,OAAOkH,QAAQ6H,wBAC/B/O,IAKc,UAAfZ,EAAMM,MACRN,EAAMwO,iBAOR+9B,QAAQhgC,oBAAoB3L,KAI9BR,aAAa0C,GAAG4D,SAjFI,QAiFmBiJ,uBAAsB88B,aAC7DrsC,aAAa0C,GAAG4D,SAjFM,UAiFmBiJ,uBAAsB88B,aAC/DrsC,aAAa0C,GAAG4D,SAjFS,aAiFmBiJ,uBAAsB88B,aCxFlE,MAAMjiC,OAAO,QACPuB,WAAW,WACXE,YAAY,YACZwD,eAAe,YAEfi9B,cAAgB,mBAChBC,yBAA2B,qCAG3BjR,YAAc,QACdzS,aAAe,SAEf2jB,eAAiB,cACjB/Q,eAAiB,oBAEjBgR,kBAAoB,oBACpBC,iBAAmB,mBACnBC,gBAAkB,kBAClBC,sBAAwB,wBAIxBC,cAAgB,kBAEhB3iC,UAAU,CACd4iC,QAAQ,EACRC,UAAW,MAGP5iC,cAAc,CAClB2iC,OAAQ,iBACRC,UAAW,mBAOb,MAAMC,cAAc1hC,cAClBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAGV9J,KAAK+K,WAIV/K,KAAK05B,OAASvtB,eAAeE,QAAQ2uB,eAAgBh7B,KAAK+K,UAErD/K,KAAK05B,SAIV15B,KAAKwsC,QAAU,KACfxsC,KAAKysC,YAAc,KACnBzsC,KAAK0sC,OAAS,KACd1sC,KAAK2sC,eAAiB,IAAM3sC,KAAK4sC,UAE7B5sC,KAAKgL,QAAQqhC,QACfrsC,KAAK6sC,gBAGP7sC,KAAK8sC,eACL9sC,KAAK4S,qBACL5S,KAAK4sC,WACP,CAGA,kBAAWnjC,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAuY,SACEliB,KAAK4sC,SACP,CAEAzhC,UACE5L,aAAaC,IAAIQ,KAAK05B,OA7EN,QA6E2B15B,KAAK2sC,gBAChDptC,aAAaC,IAAIQ,KAAK05B,OA7EL,SA6E2B15B,KAAK2sC,gBAEjD3sC,KAAKwsC,SAASvuC,SACd+B,KAAK0sC,QAAQzuC,SAEb6M,MAAMK,SACR,CAGAnB,kBAAkBF,GAMhB,OAJsB,OAAlBA,EAAOuiC,SACTviC,EAAOuiC,QAAS,GAGXviC,CACT,CAEA8I,qBACErT,aAAa0C,GAAGjC,KAAK05B,OAjGL,QAiG0B15B,KAAK2sC,gBAC/CptC,aAAa0C,GAAGjC,KAAK05B,OAjGJ,SAiG0B15B,KAAK2sC,eAClD,CAEAI,OACE,MAA2B,KAApB/sC,KAAK05B,OAAOnwB,IAAa,EAAIjG,OAAO8C,WAAWpG,KAAK05B,OAAOnwB,IACpE,CAEAyjC,OACE,MAA2B,KAApBhtC,KAAK05B,OAAOpwB,IAAa,IAAMhG,OAAO8C,WAAWpG,KAAK05B,OAAOpwB,IACtE,CAEA2jC,SACE,OAAO3pC,OAAO8C,WAAWpG,KAAK05B,OAAO17B,MACvC,CAEAkvC,SACE,MAAM/I,EAAOnkC,KAAKgtC,OAAShtC,KAAK+sC,OAChC,OAAO5I,EAAO,GAAKnkC,KAAKitC,SAAWjtC,KAAK+sC,QAAU5I,EAAO,CAC3D,CAEAyI,UAEE5sC,KAAK+K,SAAS4J,MAAM8E,YAAY2yB,cAAe,GAAGpsC,KAAKktC,YAEnDltC,KAAKysC,cACPzsC,KAAKysC,YAAYliB,YAAcvqB,KAAKmtC,QAAQntC,KAAKitC,WAGnD1tC,aAAamD,QAAQ1C,KAAK05B,OAAQmS,cAAe,CAAE7tC,MAAOgC,KAAKitC,UACjE,CAEAE,QAAQnvC,GACN,MAAyC,mBAA3BgC,KAAKgL,QAAQshC,UAA2BtsC,KAAKgL,QAAQshC,UAAUtuC,GAASgyB,OAAOhyB,EAC/F,CAEA6uC,gBAEE7sC,KAAKwsC,QAAU3mC,SAAS6jB,cAAc,UACtC1pB,KAAKwsC,QAAQ9X,UAAY,GAAGsX,gDAC5BhsC,KAAKwsC,QAAQxoC,aAAa,cAAe,QAIzC,MAAM4mC,EAAQ/kC,SAAS6jB,cAAc,OACrCkhB,EAAMlW,UAAY,gBAClB10B,KAAKysC,YAAc5mC,SAAS6jB,cAAc,OAC1C1pB,KAAKysC,YAAY/X,UAAY,gBAC7B10B,KAAKwsC,QAAQp0B,OAAOwyB,EAAO5qC,KAAKysC,aAEhCzsC,KAAK05B,OAAO0T,sBAAsB,WAAYptC,KAAKwsC,QACrD,CAEAM,eACE,MAAMO,EAASrtC,KAAK05B,OAAO/0B,aAAa,QAClC2oC,EAAWD,EAASxnC,SAASC,eAAeunC,GAAU,KAE5D,IAAKC,EACH,OAGF,MAAM/jC,EAAMvJ,KAAK+sC,OACX5I,EAAOnkC,KAAKgtC,OAASzjC,GAAO,EAE5BgkC,EAAS,GACf,IAAK,MAAMC,KAAUrhC,eAAe3L,KAAK,SAAU8sC,GAAW,CAC5D,MAAMtvC,EAAQsF,OAAO8C,WAAWonC,EAAOxvC,OAEvC,IAAKsF,OAAO8V,MAAMpb,GAAQ,CAExB,MAAM6X,EAAQnQ,KAAK6D,IAAI7D,KAAK4D,KAAKtL,EAAQuL,GAAO46B,EAAM,GAAI,GAC1DoJ,EAAO5gC,KAAK,CAAEkJ,QAAOiE,MAAO0zB,EAAO1zB,OACrC,CACF,CAEA,GAAsB,IAAlByzB,EAAO9qC,OACT,OAGF8qC,EAAOE,KAAK,CAAC/K,EAAGE,IAAMF,EAAE7sB,MAAQ+sB,EAAE/sB,OAElC7V,KAAK0sC,OAAS7mC,SAAS6jB,cAAc,OACrC1pB,KAAK0sC,OAAOhY,UAAYuX,iBACxBjsC,KAAK0sC,OAAO1oC,aAAa,cAAe,QAGxC,MAAM0pC,EAAQ,CAAC,KAAMH,EAAOvhC,IAAIua,GAASA,EAAM1Q,OAAQ,GACvD7V,KAAK0sC,OAAO/3B,MAAMg5B,oBAAsBD,EAAMnrC,MAAM,GAAGyJ,IAAI,CAAC4hC,EAAMxkC,IAAawkC,EAAOF,EAAMtkC,GAAhB,MAA4B8C,KAAK,KAE7G,IAAK,MAAO9C,EAAOmd,KAAUgnB,EAAOxrC,UAAW,CAC7C,MAAM8rC,EAAOhoC,SAAS6jB,cAAc,QAIpC,GAHAmkB,EAAKnZ,UAAYwX,gBACjB2B,EAAKl5B,MAAMm5B,gBAAkB,GAAG1kC,EAAQ,IAEpCmd,EAAMzM,MAAO,CACf,MAAMA,EAAQjU,SAAS6jB,cAAc,QACrC5P,EAAM4a,UAAYyX,sBAClBryB,EAAMyQ,YAAchE,EAAMzM,MAC1B+zB,EAAKz1B,OAAO0B,EACd,CAEA9Z,KAAK0sC,OAAOt0B,OAAOy1B,EACrB,CAEA7tC,KAAK+K,SAASqN,OAAOpY,KAAK0sC,OAC5B,EAOFntC,aAAa0C,GAAG4D,SAAUimC,yBAA0B,KAClD,IAAK,MAAM3uC,KAAWgP,eAAe3L,KA/MhB,eAgNnB+rC,MAAM7gC,oBAAoBvO,KCzN9B,MAAMwM,OAAO,YACPuB,WAAW,eACXE,YAAY,IAAIF,aAChB0D,aAAe,YAEfm/B,eAAiB,WAAW3iC,cAC5Bw8B,cAAc,QAAQx8B,cACtByE,sBAAsB,OAAOzE,uBAE7B4iC,qBAAuB,YACvBn/B,oBAAoB,SAEpBo/B,kBAAoB,yBACpBC,sBAAwB,SACxBC,wBAA0B,oBAC1BC,mBAAqB,YACrBC,mBAAqB,YACrBC,oBAAsB,mBACtBC,oBAAsB,qDACtBC,uBAAuB,0BAEvB/kC,UAAU,CACdglC,WAAY,eACZC,cAAc,EACd3uC,OAAQ,KACRoV,UAAW,CAAC,GAAK,GAAK,IAGlBzL,cAAc,CAClB+kC,WAAY,SACZC,aAAc,UACd3uC,OAAQ,UACRoV,UAAW,SAOb,MAAMw5B,kBAAkB9jC,cACtBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAGf9J,KAAK4uC,aAAe,IAAI5xC,IACxBgD,KAAK6uC,oBAAsB,IAAI7xC,IAC/BgD,KAAK8uC,aAA6D,YAA9C5oC,iBAAiBlG,KAAK+K,UAAUgkC,UAA0B,KAAO/uC,KAAK+K,SAC1F/K,KAAKgvC,cAAgB,KACrBhvC,KAAKqS,UAAY,KACjBrS,KAAKivC,oBAAsB,CACzBC,gBAAiB,EACjBC,gBAAiB,GAEnBnvC,KAAKovC,SACP,CAGA,kBAAW3lC,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAylC,UACEpvC,KAAKqvC,mCACLrvC,KAAKsvC,2BAEDtvC,KAAKqS,UACPrS,KAAKqS,UAAUmC,aAEfxU,KAAKqS,UAAYrS,KAAKuvC,kBAGxB,IAAK,MAAMC,KAAWxvC,KAAK6uC,oBAAoB/wC,SAC7CkC,KAAKqS,UAAUgD,QAAQm6B,EAE3B,CAEArkC,UACEnL,KAAKqS,UAAUmC,aACf1J,MAAMK,SACR,CAGAnB,kBAAkBF,GAOhB,OANAA,EAAO/J,OAAS2G,WAAWoD,EAAO/J,SAAW8F,SAAS4b,KAEtB,iBAArB3X,EAAOqL,YAChBrL,EAAOqL,UAAYrL,EAAOqL,UAAU7O,MAAM,KAAK0F,IAAIhO,GAASsF,OAAO8C,WAAWpI,KAGzE8L,CACT,CAEAwlC,2BACOtvC,KAAKgL,QAAQ0jC,eAKlBnvC,aAAaC,IAAIQ,KAAKgL,QAAQjL,OAAQ6nC,eAEtCroC,aAAa0C,GAAGjC,KAAKgL,QAAQjL,OAAQ6nC,cAhGX,SAgG+CzoC,IACvE,MAAMswC,EAAoBzvC,KAAK6uC,oBAAoBrxC,IAAI2B,EAAMY,OAAO2vC,MACpE,GAAID,EAAmB,CACrBtwC,EAAMwO,iBACN,MAAM9F,EAAO7H,KAAK8uC,cAAgB9pC,OAC5B2qC,EAASF,EAAkBG,UAAY5vC,KAAK+K,SAAS6kC,UAC3D,GAAI/nC,EAAKmP,SAEP,YADAnP,EAAKmP,SAAS,CAAEwB,IAAKm3B,EAAQ14B,SAAU,WAKzCpP,EAAKgoC,UAAYF,CACnB,IAEJ,CAEAJ,kBACE,MAAMnP,EAAU,CACdv4B,KAAM7H,KAAK8uC,aACX35B,UAAWnV,KAAKgL,QAAQmK,UACxBs5B,WAAYzuC,KAAKgL,QAAQyjC,YAG3B,OAAO,IAAIx5B,qBAAqBlT,GAAW/B,KAAK8vC,kBAAkB/tC,GAAUq+B,EAC9E,CAGA0P,kBAAkB/tC,GAChB,MAAMguC,EAAgBz6B,GAAStV,KAAK4uC,aAAapxC,IAAI,IAAI8X,EAAMvV,OAAOqF,MAChE4qC,EAAW16B,IACftV,KAAKivC,oBAAoBC,gBAAkB55B,EAAMvV,OAAO6vC,UACxD5vC,KAAKiwC,SAASF,EAAcz6B,KAGxB65B,GAAmBnvC,KAAK8uC,cAAgBjpC,SAAS6B,iBAAiBmoC,UAClEK,EAAkBf,GAAmBnvC,KAAKivC,oBAAoBE,gBACpEnvC,KAAKivC,oBAAoBE,gBAAkBA,EAE3C,IAAK,MAAM75B,KAASvT,EAAS,CAC3B,IAAKuT,EAAMC,eAAgB,CACzBvV,KAAKgvC,cAAgB,KACrBhvC,KAAKmwC,kBAAkBJ,EAAcz6B,IAErC,QACF,CAEA,MAAM86B,EAA2B96B,EAAMvV,OAAO6vC,WAAa5vC,KAAKivC,oBAAoBC,gBAEpF,GAAIgB,GAAmBE,GAGrB,GAFAJ,EAAS16B,IAEJ65B,EACH,YAOCe,GAAoBE,GACvBJ,EAAS16B,EAEb,CACF,CAEA+5B,mCACErvC,KAAK4uC,aAAe,IAAI5xC,IACxBgD,KAAK6uC,oBAAsB,IAAI7xC,IAE/B,MAAMqzC,EAAclkC,eAAe3L,KAtKT,SAsKqCR,KAAKgL,QAAQjL,QAE5E,IAAK,MAAMuwC,KAAUD,EAAa,CAEhC,IAAKC,EAAOZ,MAAQvoC,WAAWmpC,GAC7B,SAGF,MAAMb,EAAoBtjC,eAAeE,QAAQkkC,UAAUD,EAAOZ,MAAO1vC,KAAK+K,UAG1EnE,UAAU6oC,KACZzvC,KAAK4uC,aAAa1xC,IAAIqzC,UAAUD,EAAOZ,MAAOY,GAC9CtwC,KAAK6uC,oBAAoB3xC,IAAIozC,EAAOZ,KAAMD,GAE9C,CACF,CAEAQ,SAASlwC,GACHC,KAAKgvC,gBAAkBjvC,IAI3BC,KAAKmwC,kBAAkBnwC,KAAKgL,QAAQjL,QACpCC,KAAKgvC,cAAgBjvC,EACrBA,EAAOuH,UAAUiM,IAlMK,UAmMtBvT,KAAKwwC,iBAAiBzwC,GAEtBR,aAAamD,QAAQ1C,KAAK+K,SAAUgjC,eAAgB,CAAE9sC,cAAelB,IACvE,CAEAywC,iBAAiBzwC,GAEf,GAAIA,EAAOuH,UAAUpG,SA3MI,aA2M4B,CACnD,MAAMuvC,EAAa1wC,EAAOkH,QAAQ,UAAU6F,uBAK5C,YAJI2jC,GAAYjkC,QAAQgiC,yBACtBiC,EAAWnpC,UAAUiM,IA7MH,UAiNtB,CAEA,IAAK,MAAMm9B,KAAavkC,eAAeM,QAAQ1M,EA/MnB,qBAkN1B,IAAK,MAAMqV,KAAQjJ,eAAeS,KAAK8jC,EAAWnC,qBAChDn5B,EAAK9N,UAAUiM,IAvNG,SA0NxB,CAEA48B,kBAAkBn1B,GAChBA,EAAO1T,UAAUrJ,OA7NK,UA+NtB,MAAM0yC,EAAcxkC,eAAe3L,KAAK,gBAAiDwa,GACzF,IAAK,MAAM9C,KAAQy4B,EACjBz4B,EAAK5Q,UAAUrJ,OAjOK,SAmOxB,EAOFsB,aAAa0C,GAAG+C,OAAQ6K,sBAAqB,KAC3C,IAAK,MAAM+gC,KAAOzkC,eAAe3L,KAAKytC,mBACpCU,UAAUjjC,oBAAoBklC,KCxPlC,MAAMjnC,OAAO,MACPuB,WAAW,SACXE,YAAY,UAEZkP,aAAa,cACbC,eAAe,gBACfH,aAAa,cACbC,cAAc,eACdtL,qBAAuB,eACvBU,cAAgB,iBAChBI,oBAAsB,cAEtBV,eAAiB,YACjBC,gBAAkB,aAClB+O,aAAe,UACfC,eAAiB,YACjBC,SAAW,OACXC,QAAU,MAEVzP,kBAAoB,SACpBP,kBAAkB,OAClBC,kBAAkB,OAClBigC,qBAAuB,0BACvB3vB,cAAgB,QAChBgyB,yBAA2B,QAAQrC,wBAEnCsC,mBAAqB,sCACrBC,eAAiB,8BACjBrgC,eAAiB,YAAYmgC,6CAA6CA,yCAAyCA,2BACnH/hC,uBAAuB,yBACvBkiC,oBAAsB,GAAGtgC,mBAAmB5B,yBAE5CmiC,4BAA8B,gCAMpC,MAAMC,YAAYrmC,cAChBV,YAAYhN,GACV2N,MAAM3N,GACN6C,KAAK4gB,QAAU5gB,KAAK+K,SAAS9D,QAAQ6pC,oBAEhC9wC,KAAK4gB,UAOV5gB,KAAKmxC,sBAAsBnxC,KAAK4gB,QAAS5gB,KAAKoxC,gBAE9C7xC,aAAa0C,GAAGjC,KAAK+K,SAAU0E,cAAetQ,GAASa,KAAK8U,SAAS3V,IACvE,CAGA,eAAWwK,GACT,MAzDS,KA0DX,CAGAiS,OACE,MAAMy1B,EAAYrxC,KAAK+K,SACvB,GAAI/K,KAAKsxC,cAAcD,GACrB,OAIF,MAAMx8B,EAAS7U,KAAKuxC,iBAEdC,EAAY38B,EAChBtV,aAAamD,QAAQmS,EAAQyF,aAAY,CAAErZ,cAAeowC,IAC1D,KAEgB9xC,aAAamD,QAAQ2uC,EAAWj3B,aAAY,CAAEnZ,cAAe4T,IAEjEnG,kBAAqB8iC,GAAaA,EAAU9iC,mBAI1D1O,KAAKyxC,YAAY58B,EAAQw8B,GACzBrxC,KAAK0xC,UAAUL,EAAWx8B,GAC5B,CAGA68B,UAAUv0C,EAASw0C,GACZx0C,IAILA,EAAQmK,UAAUiM,IAvEI,UAyEtBvT,KAAK0xC,UAAUvlC,eAAeiB,uBAAuBjQ,IAgBrD6C,KAAKuL,eAdY4Q,KACsB,QAAjChf,EAAQwH,aAAa,SAKzBxH,EAAQ+G,gBAAgB,YACxB/G,EAAQ6G,aAAa,iBAAiB,GACtChE,KAAK4xC,YAAYz0C,GAAS,GAC1BoC,aAAamD,QAAQvF,EAASkd,cAAa,CACzCpZ,cAAe0wC,KARfx0C,EAAQmK,UAAUiM,IA3EF,SAuFUpW,EAASA,EAAQmK,UAAUpG,SAxFrC,SAyFtB,CAEAuwC,YAAYt0C,EAASw0C,GACdx0C,IAILA,EAAQmK,UAAUrJ,OAjGI,UAkGtBd,EAAQwkC,OAER3hC,KAAKyxC,YAAYtlC,eAAeiB,uBAAuBjQ,IAcvD6C,KAAKuL,eAZY4Q,KACsB,QAAjChf,EAAQwH,aAAa,SAKzBxH,EAAQ6G,aAAa,iBAAiB,GACtC7G,EAAQ6G,aAAa,WAAY,MACjChE,KAAK4xC,YAAYz0C,GAAS,GAC1BoC,aAAamD,QAAQvF,EAASod,eAAc,CAAEtZ,cAAe0wC,KAP3Dx0C,EAAQmK,UAAUrJ,OAtGF,SAgHUd,EAASA,EAAQmK,UAAUpG,SAjHrC,SAkHtB,CAEA4T,SAAS3V,GACP,IAAM,CAACgQ,eAAgBC,gBAAiB+O,aAAcC,eAAgBC,SAAUC,SAAStc,SAAS7C,EAAM/B,KACtG,OAGF+B,EAAMwlB,kBACNxlB,EAAMwO,iBAEN,MAAMrB,EAAWtM,KAAKoxC,eAAe7sC,OAAOpH,IAAYgK,WAAWhK,IACnE,IAAI00C,EAEJ,GAAI,CAACxzB,SAAUC,SAAStc,SAAS7C,EAAM/B,KACrCy0C,EAAoB1yC,EAAM/B,MAAQihB,SAAW/R,EAAS,GAAKA,EAASkb,IAAG,OAClE,CACL,MAAM5P,EAAS,CAACxI,gBAAiBgP,gBAAgBpc,SAAS7C,EAAM/B,KAChEy0C,EAAoB/oC,qBAAqBwD,EAAUnN,EAAMY,OAAQ6X,GAAQ,EAC3E,CAEIi6B,IACFA,EAAkB54B,MAAM,CAAEC,eAAe,IACzCg4B,IAAIxlC,oBAAoBmmC,GAAmBj2B,OAE/C,CAEAw1B,eACE,OAAOjlC,eAAe3L,KAAKwwC,oBAAqBhxC,KAAK4gB,QACvD,CAEA2wB,iBACE,OAAOvxC,KAAKoxC,eAAe5wC,KAAK+L,GAASvM,KAAKsxC,cAAc/kC,KAAW,IACzE,CAEA4kC,sBAAsBn2B,EAAQ1O,GAC5BtM,KAAK8xC,yBAAyB92B,EAAQ,OAAQ,WAE9C,IAAK,MAAMzO,KAASD,EAClBtM,KAAK+xC,6BAA6BxlC,EAEtC,CAEAwlC,6BAA6BxlC,GAC3BA,EAAQvM,KAAKgyC,iBAAiBzlC,GAC9B,MAAM0lC,EAAWjyC,KAAKsxC,cAAc/kC,GAC9B2lC,EAAYlyC,KAAKmyC,iBAAiB5lC,GACxCA,EAAMvI,aAAa,gBAAiBiuC,GAEhCC,IAAc3lC,GAChBvM,KAAK8xC,yBAAyBI,EAAW,OAAQ,gBAG9CD,GACH1lC,EAAMvI,aAAa,WAAY,MAGjChE,KAAK8xC,yBAAyBvlC,EAAO,OAAQ,OAG7CvM,KAAKoyC,mCAAmC7lC,EAC1C,CAEA6lC,mCAAmC7lC,GACjC,MAAMxM,EAASoM,eAAeiB,uBAAuBb,GAEhDxM,IAILC,KAAK8xC,yBAAyB/xC,EAAQ,OAAQ,YAE1CwM,EAAMnH,IACRpF,KAAK8xC,yBAAyB/xC,EAAQ,kBAAmB,GAAGwM,EAAMnH,MAEtE,CAEAwsC,YAAYz0C,EAASozB,GACnB,MAAM2hB,EAAYlyC,KAAKmyC,iBAAiBh1C,GAClCszC,EAAatkC,eAAeE,QAAQmiC,qBAAsB0D,GAChE,IAAKzB,EACH,OAGF,MAAMxwB,EAAO9T,eAAeE,QAlMV,QAkMiC6lC,GAEnDzB,EAAWnpC,UAAU2H,OAxMC,SAwMyBshB,GAC3CtQ,GACFA,EAAK3Y,UAAU2H,OAxMG,OAwMqBshB,GAGzCkgB,EAAWzsC,aAAa,gBAAiBusB,EAC3C,CAEAuhB,yBAAyB30C,EAASwnC,EAAW3mC,GACtCb,EAAQqK,aAAam9B,IACxBxnC,EAAQ6G,aAAa2gC,EAAW3mC,EAEpC,CAEAszC,cAAcj2B,GACZ,OAAOA,EAAK/T,UAAUpG,SAvNA,SAwNxB,CAGA8wC,iBAAiB32B,GACf,OAAOA,EAAK7O,QAAQwkC,qBAAuB31B,EAAOlP,eAAeE,QAAQ2kC,oBAAqB31B,EAChG,CAGA82B,iBAAiB92B,GACf,OAAOA,EAAKpU,QAAQ8pC,iBAAmB11B,CACzC,EAOF9b,aAAa0C,GAAG4D,SApPa,eAoPmBiJ,uBAAsB,SAAU3P,GAC1E,CAAC,IAAK,QAAQ6C,SAAShC,KAAK0N,UAC9BvO,EAAMwO,iBAGJxG,WAAWnH,OAIfkxC,IAAIxlC,oBAAoB1L,MAAM4b,MAChC,GAKArc,aAAa0C,GAAG+C,OAjQY,cAiQiB,KAC3C,IAAK,MAAM7H,KAAWgP,eAAe3L,KAAKywC,6BACxCC,IAAIxlC,oBAAoBvO,KC7Q5B,MAAMwM,OAAO,QACPuB,WAAW,WACXE,YAAY,YAEZinC,gBAAkB,qBAClBC,eAAiB,oBACjBzK,cAAgB,mBAChBC,eAAiB,oBACjBxtB,WAAa,gBACbC,aAAe,kBACfH,WAAa,gBACbC,YAAc,iBAEd/L,gBAAkB,OAClBikC,gBAAkB,OAClBhkC,gBAAkB,OAClBikC,mBAAqB,UAErB9oC,cAAc,CAClB2+B,UAAW,UACXoK,SAAU,UACVlK,MAAO,UAGH9+B,UAAU,CACd4+B,WAAW,EACXoK,UAAU,EACVlK,MAAO,KAOT,MAAMmK,cAAc7nC,cAClBV,YAAYhN,EAAS2M,GACnBgB,MAAM3N,EAAS2M,GAEf9J,KAAK2oC,SAAW,KAChB3oC,KAAK2yC,sBAAuB,EAC5B3yC,KAAK4yC,yBAA0B,EAC/B5yC,KAAKkpC,eACP,CAGA,kBAAWz/B,GACT,OAAOA,SACT,CAEA,sBAAWC,GACT,OAAOA,aACT,CAEA,eAAWC,GACT,OAAOA,MACT,CAGAiS,OACoBrc,aAAamD,QAAQ1C,KAAK+K,SAAUqP,YAExC1L,mBAId1O,KAAK6yC,gBAED7yC,KAAKgL,QAAQq9B,WACfroC,KAAK+K,SAASzD,UAAUiM,IAvDN,QAiEpBvT,KAAK+K,SAASzD,UAAUrJ,OAhEJ,QAiEpB+J,OAAOhI,KAAK+K,UACZ/K,KAAK+K,SAASzD,UAAUiM,IAjEJ,OACG,WAkEvBvT,KAAKuL,eAXY4Q,KACfnc,KAAK+K,SAASzD,UAAUrJ,OAxDH,WAyDrBsB,aAAamD,QAAQ1C,KAAK+K,SAAUsP,aAEpCra,KAAK8yC,sBAOuB9yC,KAAK+K,SAAU/K,KAAKgL,QAAQq9B,WAC5D,CAEA1sB,OACO3b,KAAK+yC,YAIQxzC,aAAamD,QAAQ1C,KAAK+K,SAAUuP,YAExC5L,mBAUd1O,KAAK+K,SAASzD,UAAUiM,IAtFD,WAuFvBvT,KAAKuL,eAPY4Q,KACfnc,KAAK+K,SAASzD,UAAUiM,IAnFN,QAoFlBvT,KAAK+K,SAASzD,UAAUrJ,OAlFH,UADH,QAoFlBsB,aAAamD,QAAQ1C,KAAK+K,SAAUwP,eAIRva,KAAK+K,SAAU/K,KAAKgL,QAAQq9B,YAC5D,CAEAl9B,UACEnL,KAAK6yC,gBAED7yC,KAAK+yC,WACP/yC,KAAK+K,SAASzD,UAAUrJ,OA/FN,QAkGpB6M,MAAMK,SACR,CAEA4nC,UACE,OAAO/yC,KAAK+K,SAASzD,UAAUpG,SAtGX,OAuGtB,CAGA4xC,qBACO9yC,KAAKgL,QAAQynC,WAIdzyC,KAAK2yC,sBAAwB3yC,KAAK4yC,0BAItC5yC,KAAK2oC,SAAW9/B,WAAW,KACzB7I,KAAK2b,QACJ3b,KAAKgL,QAAQu9B,QAClB,CAEAyK,eAAe7zC,EAAO8zC,GACpB,OAAQ9zC,EAAMM,MACZ,IAAK,YACL,IAAK,WACHO,KAAK2yC,qBAAuBM,EAC5B,MAGF,IAAK,UACL,IAAK,WACHjzC,KAAK4yC,wBAA0BK,EASnC,GAAIA,EAEF,YADAjzC,KAAK6yC,gBAIP,MAAMK,EAAc/zC,EAAM8B,cACtBjB,KAAK+K,WAAamoC,GAAelzC,KAAK+K,SAAS7J,SAASgyC,IAI5DlzC,KAAK8yC,oBACP,CAEA5J,gBACE3pC,aAAa0C,GAAGjC,KAAK+K,SAAUsnC,gBAAiBlzC,GAASa,KAAKgzC,eAAe7zC,GAAO,IACpFI,aAAa0C,GAAGjC,KAAK+K,SAAUunC,eAAgBnzC,GAASa,KAAKgzC,eAAe7zC,GAAO,IACnFI,aAAa0C,GAAGjC,KAAK+K,SAAU88B,cAAe1oC,GAASa,KAAKgzC,eAAe7zC,GAAO,IAClFI,aAAa0C,GAAGjC,KAAK+K,SAAU+8B,eAAgB3oC,GAASa,KAAKgzC,eAAe7zC,GAAO,GACrF,CAEA0zC,gBACE74B,aAAaha,KAAK2oC,UAClB3oC,KAAK2oC,SAAW,IAClB,EAOFr7B,qBAAqBolC,OCzLrB,MAAM/oC,KAAO,UACPuB,SAAW,aACXE,UAAY,IAAIF,WAEhBioC,aAAe,SAAS/nC,YACxBgoC,cAAgB,UAAUhoC,YAC1Bw8B,YAAc,QAEd94B,qBAAuB,6BAEvBpF,YAAc,CAClBi7B,UAAW,SACX3mC,MAAO,2BAGHyL,QAAU,CACdk7B,UAAW,QACX3mC,MAAO,MAOT,MAAMq1C,gBAAgBxoC,cAEpB,kBAAWpB,GACT,OAAOA,OACT,CAEA,sBAAWC,GACT,OAAOA,WACT,CAEA,eAAWC,GACT,OAAOA,IACT,CAGAsF,SACsB1P,aAAamD,QAAQ1C,KAAK+K,SAAUooC,cAExCzkC,mBAIhB1O,KAAKszC,WAEL/zC,aAAamD,QAAQ1C,KAAK+K,SAAUqoC,eACtC,CAGAE,WACE,MAAM3O,UAAEA,EAAS3mC,MAAEA,GAAUgC,KAAKgL,QAEhB,OAAd25B,IAIc,UAAdA,EAMA3kC,KAAK+K,SAASpG,aAAaggC,KAAe3U,OAAOhyB,GAKrDgC,KAAK+K,SAAS/G,aAAa2gC,EAAW3mC,GAJpCgC,KAAK+K,SAAS7G,gBAAgBygC,GAN9B3kC,KAAK+K,SAASzD,UAAU2H,OAAOjR,GAWnC,EAOF4P,oBAAoBylC,QAxEA,QAwEsBvkC,qBAAsB,iB","ignoreList":[]}
\ No newline at end of file
index fb48e3892437739724f6151731323d2db5886971..7ab09e296ab62c4d3ef1159137b98e5e85e2c8ac 100644 (file)
@@ -35,6 +35,13 @@ class BaseComponent extends Config {
     }
     this._element = element;
     this._config = this._getConfig(config);
+
+    // Dispose any existing instance bound to this element before registering the new one,
+    // so its event listeners and timers are cleaned up instead of leaking
+    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY);
+    if (existingInstance) {
+      existingInstance.dispose();
+    }
     Data.set(this._element, this.constructor.DATA_KEY, this);
   }
 
@@ -49,7 +56,13 @@ class BaseComponent extends Config {
 
   // Private
   _queueCallback(callback, element, isAnimated = true) {
-    executeAfterTransition(callback, element, isAnimated);
+    executeAfterTransition(() => {
+      // Don't run the completion callback if the instance was disposed mid-transition
+      if (!this._element) {
+        return;
+      }
+      callback();
+    }, element, isAnimated);
   }
   _getConfig(config) {
     config = this._mergeConfigObj(config, this._element);
index 51713e0761ef44786e23a0a1b37a04443d0a19c2..934bff50e834a925e0c2ea05291b3f273ced260e 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"base-component.js","sources":["../src/base-component.js"],"sourcesContent":["/**\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"],"names":["VERSION","BaseComponent","Config","constructor","element","config","getElement","_element","_config","_getConfig","Data","set","DATA_KEY","dispose","remove","EventHandler","off","EVENT_KEY","propertyName","Object","getOwnPropertyNames","_queueCallback","callback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","get","getOrCreateInstance","NAME","eventName","name"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMA,OAAO,GAAG,cAAc;;AAE9B;AACA;AACA;;AAEA,MAAMC,aAAa,SAASC,MAAM,CAAC;AACjCC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;AAC3B,IAAA,KAAK,EAAE;AAEPD,IAAAA,OAAO,GAAGE,UAAU,CAACF,OAAO,CAAC;IAC7B,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAI,CAACG,QAAQ,GAAGH,OAAO;IACvB,IAAI,CAACI,OAAO,GAAG,IAAI,CAACC,UAAU,CAACJ,MAAM,CAAC;AAEtCK,IAAAA,IAAI,CAACC,GAAG,CAAC,IAAI,CAACJ,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACS,QAAQ,EAAE,IAAI,CAAC;AAC1D,EAAA;;AAEA;AACAC,EAAAA,OAAOA,GAAG;AACRH,IAAAA,IAAI,CAACI,MAAM,CAAC,IAAI,CAACP,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACS,QAAQ,CAAC;AACrDG,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACT,QAAQ,EAAE,IAAI,CAACJ,WAAW,CAACc,SAAS,CAAC;IAE3D,KAAK,MAAMC,YAAY,IAAIC,MAAM,CAACC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAC3D,MAAA,IAAI,CAACF,YAAY,CAAC,GAAG,IAAI;AAC3B,IAAA;AACF,EAAA;;AAEA;EACAG,cAAcA,CAACC,QAAQ,EAAElB,OAAO,EAAEmB,UAAU,GAAG,IAAI,EAAE;AACnDC,IAAAA,sBAAsB,CAACF,QAAQ,EAAElB,OAAO,EAAEmB,UAAU,CAAC;AACvD,EAAA;EAEAd,UAAUA,CAACJ,MAAM,EAAE;IACjBA,MAAM,GAAG,IAAI,CAACoB,eAAe,CAACpB,MAAM,EAAE,IAAI,CAACE,QAAQ,CAAC;AACpDF,IAAAA,MAAM,GAAG,IAAI,CAACqB,iBAAiB,CAACrB,MAAM,CAAC;AACvC,IAAA,IAAI,CAACsB,gBAAgB,CAACtB,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;;AAEA;EACA,OAAOuB,WAAWA,CAACxB,OAAO,EAAE;AAC1B,IAAA,OAAOM,IAAI,CAACmB,GAAG,CAACvB,UAAU,CAACF,OAAO,CAAC,EAAE,IAAI,CAACQ,QAAQ,CAAC;AACrD,EAAA;EAEA,OAAOkB,mBAAmBA,CAAC1B,OAAO,EAAEC,MAAM,GAAG,EAAE,EAAE;IAC/C,OAAO,IAAI,CAACuB,WAAW,CAACxB,OAAO,CAAC,IAAI,IAAI,IAAI,CAACA,OAAO,EAAE,OAAOC,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,IAAI,CAAC;AACnG,EAAA;EAEA,WAAWL,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWY,QAAQA,GAAG;AACpB,IAAA,OAAO,CAAA,GAAA,EAAM,IAAI,CAACmB,IAAI,CAAA,CAAE;AAC1B,EAAA;EAEA,WAAWd,SAASA,GAAG;AACrB,IAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAACL,QAAQ,CAAA,CAAE;AAC5B,EAAA;EAEA,OAAOoB,SAASA,CAACC,IAAI,EAAE;AACrB,IAAA,OAAO,GAAGA,IAAI,CAAA,EAAG,IAAI,CAAChB,SAAS,CAAA,CAAE;AACnC,EAAA;AACF;;;;"}
\ No newline at end of file
+{"version":3,"file":"base-component.js","sources":["../src/base-component.js"],"sourcesContent":["/**\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    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\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(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, 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"],"names":["VERSION","BaseComponent","Config","constructor","element","config","getElement","_element","_config","_getConfig","existingInstance","Data","get","DATA_KEY","dispose","set","remove","EventHandler","off","EVENT_KEY","propertyName","Object","getOwnPropertyNames","_queueCallback","callback","isAnimated","executeAfterTransition","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getInstance","getOrCreateInstance","NAME","eventName","name"],"mappings":"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"}
\ No newline at end of file
index 742bbdb3cbda15cc0714865c47d993c4b81a3bd4..10735c3f617424fbf381db31e5e2509a3517f286 100644 (file)
@@ -53,10 +53,14 @@ const CLASS_NAME_PLAYING = 'carousel-playing';
 // `--carousel-interval` used in the SCSS source becomes this at runtime.
 const PROPERTY_INTERVAL = '--bs-carousel-interval';
 
-// How many frames the scroll-settle watcher waits when no movement is ever
-// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before
-// it gives up and restores snapping anyway.
-const SCROLL_SETTLE_MAX_FRAMES = 10;
+// Duration (ms) of the JS-driven slide animation used for programmatic
+// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`
+// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,
+// because Safari mis-scales programmatic smooth scrolls under page zoom — a
+// one-slide jump sails well past the target (by the zoom factor) and the
+// restored snap then visibly yanks the slide back. Animating by hand is immune
+// to that and gives every jump a consistent duration.
+const SCROLL_DURATION = 300;
 
 // How far below the most-visible slide a slide's IntersectionRatio can be while
 // still counting as the active (left-most) slide. After a programmatic scroll
@@ -98,6 +102,10 @@ const DefaultType = {
   pause: '(string|boolean)'
 };
 
+// Standard ease-in-out cubic, so the JS-driven scroll accelerates and
+// decelerates like a native smooth scroll rather than moving linearly.
+const easeInOutCubic = progress => progress < 0.5 ? 4 * progress * progress * progress : 1 - (-2 * progress + 2) ** 3 / 2;
+
 /**
  * Class definition
  */
@@ -118,7 +126,8 @@ class Carousel extends BaseComponent {
     this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element);
     this._interval = null;
     this._observer = null;
-    this._snapRestoreFrame = null;
+    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).
+    this._scrollFrame = null;
     // True while a seamless loop transition is animating, so the
     // IntersectionObserver and re-entrant navigation don't interfere.
     this._looping = false;
@@ -228,8 +237,8 @@ class Carousel extends BaseComponent {
     if (this._observer) {
       this._observer.disconnect();
     }
-    if (this._snapRestoreFrame !== null) {
-      cancelAnimationFrame(this._snapRestoreFrame);
+    if (this._scrollFrame !== null) {
+      cancelAnimationFrame(this._scrollFrame);
     }
 
     // Tidy up any in-flight loop transition: drop a stray clone and restore
@@ -364,23 +373,80 @@ class Carousel extends BaseComponent {
       return;
     }
 
-    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,
-    // but it also clamps *programmatic* scrolls to one snap point — which would
-    // break multi-slide jumps from an indicator click, `to()`, or wrapping from
-    // the last slide back to the first. Disable snapping for the duration of the
-    // programmatic scroll, then restore it once the scroll settles so the slide
-    // still rests precisely (honouring peek/gap).
+    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single
+    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or
+    // wrapping from the last slide back to the first). Suspend snapping while we
+    // animate, then restore it once we arrive so the slide rests precisely on the
+    // snap point (honouring peek/gap).
     const targetLeft = this._viewport.scrollLeft + left;
     this._viewport.style.scrollSnapType = 'none';
-    this._viewport.scrollBy({
-      left,
-      top: 0,
-      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets
-      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would
-      // still animate. `'instant'` forces an immediate, motion-free jump.
-      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'
+    this._animateScroll(targetLeft, () => {
+      this._viewport.style.scrollSnapType = '';
+      // Without IntersectionObserver nothing else fires `slid`/updates the active
+      // slide after a programmatic scroll, so do it here. With the observer
+      // present this is a no-op (it already moved the active index to `index`).
+      if (!this._observer) {
+        this._setActive(index);
+      }
+
+      // The IntersectionObserver doesn't fire once the viewport has stopped, so
+      // refresh the end controls here to catch the final settle landing exactly
+      // on the scroll extent (e.g. disabling `next` at the last view).
+      this._updateEndControls();
     });
-    this._restoreSnapWhenSettled(targetLeft, index);
+  }
+
+  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,
+  // stepping the position ourselves each frame (the caller suspends snapping
+  // first and restores it in `onComplete`). This replaces
+  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic
+  // jumps overshoot the target and snap back. Because we set every frame's
+  // absolute position with an instant scroll, the animation can't overshoot and
+  // every jump takes the same time, in every browser.
+  _animateScroll(targetLeft, onComplete) {
+    if (this._scrollFrame !== null) {
+      cancelAnimationFrame(this._scrollFrame);
+      this._scrollFrame = null;
+    }
+    const startLeft = this._viewport.scrollLeft;
+    const distance = targetLeft - startLeft;
+
+    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.
+    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {
+      this._viewport.scrollTo({
+        left: targetLeft,
+        behavior: 'instant'
+      });
+      onComplete();
+      return;
+    }
+    let startTime = null;
+    const step = now => {
+      if (startTime === null) {
+        startTime = now;
+      }
+      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1);
+      // `'instant'` (not the default) because the viewport sets
+      // `scroll-behavior: smooth` in CSS; without it each step would itself
+      // animate and fight this loop.
+      this._viewport.scrollTo({
+        left: startLeft + distance * easeInOutCubic(progress),
+        behavior: 'instant'
+      });
+      if (progress < 1) {
+        this._scrollFrame = requestAnimationFrame(step);
+        return;
+      }
+
+      // Land exactly on target, guarding against floating-point drift.
+      this._viewport.scrollTo({
+        left: targetLeft,
+        behavior: 'instant'
+      });
+      this._scrollFrame = null;
+      onComplete();
+    };
+    this._scrollFrame = requestAnimationFrame(step);
   }
 
   // Horizontal distance to scroll the viewport so `element` rests where the
@@ -442,12 +508,7 @@ class Carousel extends BaseComponent {
       // current slide so the insertion doesn't flash before we animate.
       this._jumpScroll(this._scrollDelta(items[fromIndex]));
     }
-    this._viewport.scrollBy({
-      left: this._scrollDelta(clone),
-      top: 0,
-      behavior: 'smooth'
-    });
-    this._afterScrollSettles(() => {
+    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {
       // Teleport to the real destination without animation. JS runs to
       // completion before the browser paints, so removing the clone and the
       // compensating scroll land in a single frame (no visible flash).
@@ -485,81 +546,6 @@ class Carousel extends BaseComponent {
     });
   }
 
-  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops
-  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps
-  // to the *nearest* snap point, so if we restored mid-animation the viewport
-  // could jump back to the slide we came from — most visible stepping to the
-  // first/last slide, where it looks like the control "doesn't work".
-  _restoreSnapWhenSettled(targetLeft, index) {
-    this._afterScrollSettles(() => {
-      this._viewport.style.scrollSnapType = '';
-      // Without IntersectionObserver nothing else fires `slid`/updates the active
-      // slide after a programmatic scroll, so do it here. With the observer
-      // present this is a no-op (it already moved the active index to `index`).
-      if (!this._observer && index !== undefined) {
-        this._setActive(index);
-      }
-
-      // The IntersectionObserver doesn't fire once the viewport has stopped, so
-      // refresh the end controls here to catch the final ~1px settle landing
-      // exactly on the scroll extent (e.g. disabling `next` at the last view).
-      this._updateEndControls();
-    }, targetLeft);
-  }
-
-  // Invoke `callback` once the viewport stops moving. We watch the scroll
-  // position across frames instead of relying on the `scrollend` event, which
-  // isn't available across our supported browsers yet.
-  //
-  // Crucially, we only start counting "stable" frames once the scroll has
-  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first
-  // frame or two, so naively treating those initial unchanged frames as
-  // "settled" would re-enable `mandatory` snapping mid-animation — which cancels
-  // the in-flight programmatic scroll and lands on the wrong slide (most visible
-  // in multi-item layouts). If the scroll never moves (delta clamped at an end,
-  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.
-  //
-  // When `targetLeft` is known we also finish the moment we arrive there, so the
-  // snap is restored exactly on the destination snap point and can't re-snap the
-  // viewport backwards (the failure mode where stepping to the first/last slide
-  // appears to do nothing).
-  _afterScrollSettles(callback, targetLeft) {
-    if (typeof requestAnimationFrame === 'undefined') {
-      callback();
-      return;
-    }
-    if (this._snapRestoreFrame !== null) {
-      cancelAnimationFrame(this._snapRestoreFrame);
-    }
-    const startLeft = this._viewport.scrollLeft;
-    let lastLeft = startLeft;
-    let stableFrames = 0;
-    let waited = 0;
-    let hasMoved = false;
-    const tick = () => {
-      const currentLeft = this._viewport.scrollLeft;
-      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1;
-      if (Math.abs(currentLeft - startLeft) > 1) {
-        hasMoved = true;
-      }
-
-      // Only accrue stable frames after movement begins, so the pre-animation
-      // and ease-in frames don't prematurely count as settled.
-      if (hasMoved) {
-        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0;
-      }
-      lastLeft = currentLeft;
-      waited += 1;
-      if (reachedTarget || hasMoved && stableFrames >= 3 || !hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES) {
-        this._snapRestoreFrame = null;
-        callback();
-        return;
-      }
-      this._snapRestoreFrame = requestAnimationFrame(tick);
-    };
-    this._snapRestoreFrame = requestAnimationFrame(tick);
-  }
-
   // Fade mode just swaps the active class; the CSS opacity transition on
   // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and
   // collapses to an instant swap under reduced motion, via the `transition`
index 777527aec3979f3622eff766c823565b3c5ada77..1576f118d1901020ec23c43d52b188dd8c04485c 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"carousel.js","sources":["../src/carousel.js"],"sourcesContent":["/**\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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// How many frames the scroll-settle watcher waits when no movement is ever\n// detected (clamped programmatic scroll, or `scrollBy` stubbed in tests) before\n// it gives up and restores snapping anyway.\nconst SCROLL_SETTLE_MAX_FRAMES = 10\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    this._snapRestoreFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` keeps user wheel/touch flings to a single slide,\n    // but it also clamps *programmatic* scrolls to one snap point — which would\n    // break multi-slide jumps from an indicator click, `to()`, or wrapping from\n    // the last slide back to the first. Disable snapping for the duration of the\n    // programmatic scroll, then restore it once the scroll settles so the slide\n    // still rests precisely (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({\n      left,\n      top: 0,\n      // `'instant'` (not `'auto'`) for reduced motion: the viewport sets\n      // `scroll-behavior: smooth` in CSS, and `'auto'` defers to it, so it would\n      // still animate. `'instant'` forces an immediate, motion-free jump.\n      behavior: this._prefersReducedMotion() ? 'instant' : 'smooth'\n    })\n    this._restoreSnapWhenSettled(targetLeft, index)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._viewport.scrollBy({\n      left: this._scrollDelta(clone),\n      top: 0,\n      behavior: 'smooth'\n    })\n\n    this._afterScrollSettles(() => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Re-enable scroll snapping once the viewport reaches `targetLeft` (or stops\n  // moving). Passing the target matters: restoring `mandatory` snapping re-snaps\n  // to the *nearest* snap point, so if we restored mid-animation the viewport\n  // could jump back to the slide we came from — most visible stepping to the\n  // first/last slide, where it looks like the control \"doesn't work\".\n  _restoreSnapWhenSettled(targetLeft, index) {\n    this._afterScrollSettles(() => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer && index !== undefined) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final ~1px settle landing\n      // exactly on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    }, targetLeft)\n  }\n\n  // Invoke `callback` once the viewport stops moving. We watch the scroll\n  // position across frames instead of relying on the `scrollend` event, which\n  // isn't available across our supported browsers yet.\n  //\n  // Crucially, we only start counting \"stable\" frames once the scroll has\n  // actually moved. A smooth `scrollBy` doesn't update `scrollLeft` for the first\n  // frame or two, so naively treating those initial unchanged frames as\n  // \"settled\" would re-enable `mandatory` snapping mid-animation — which cancels\n  // the in-flight programmatic scroll and lands on the wrong slide (most visible\n  // in multi-item layouts). If the scroll never moves (delta clamped at an end,\n  // or `scrollBy` stubbed out in unit tests), we fall back to a short frame cap.\n  //\n  // When `targetLeft` is known we also finish the moment we arrive there, so the\n  // snap is restored exactly on the destination snap point and can't re-snap the\n  // viewport backwards (the failure mode where stepping to the first/last slide\n  // appears to do nothing).\n  _afterScrollSettles(callback, targetLeft) {\n    if (typeof requestAnimationFrame === 'undefined') {\n      callback()\n      return\n    }\n\n    if (this._snapRestoreFrame !== null) {\n      cancelAnimationFrame(this._snapRestoreFrame)\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    let lastLeft = startLeft\n    let stableFrames = 0\n    let waited = 0\n    let hasMoved = false\n\n    const tick = () => {\n      const currentLeft = this._viewport.scrollLeft\n      const reachedTarget = targetLeft !== undefined && Math.abs(currentLeft - targetLeft) <= 1\n\n      if (Math.abs(currentLeft - startLeft) > 1) {\n        hasMoved = true\n      }\n\n      // Only accrue stable frames after movement begins, so the pre-animation\n      // and ease-in frames don't prematurely count as settled.\n      if (hasMoved) {\n        stableFrames = Math.abs(currentLeft - lastLeft) < 1 ? stableFrames + 1 : 0\n      }\n\n      lastLeft = currentLeft\n      waited += 1\n\n      if (reachedTarget || (hasMoved && stableFrames >= 3) || (!hasMoved && waited >= SCROLL_SETTLE_MAX_FRAMES)) {\n        this._snapRestoreFrame = null\n        callback()\n        return\n      }\n\n      this._snapRestoreFrame = requestAnimationFrame(tick)\n    }\n\n    this._snapRestoreFrame = requestAnimationFrame(tick)\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_SETTLE_MAX_FRAMES","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","Default","autoplay","ends","interval","keyboard","pause","DefaultType","Carousel","BaseComponent","constructor","element","config","_viewport","SelectorEngine","findOne","_element","_indicatorsElement","_playPauseElement","_prevControls","find","_nextControls","_interval","_observer","_snapRestoreFrame","_looping","_visibility","Map","_playing","_config","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","next","to","_navIndex","nextWhenVisible","document","visibilityState","isVisible","prev","_clearInterval","classList","remove","_scheduleAutoplay","add","index","items","_getItems","rawIndex","Number","parseInt","_prefersReducedMotion","_canLoop","length","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","EventHandler","trigger","relatedTarget","direction","_direction","from","defaultPrevented","_isFade","_fadeTo","_scrollToIndex","dispose","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","off","_configAfterMerge","includes","active","indexOf","Math","max","on","event","_keydown","_maybeEnableCycle","_pauseFromInteraction","test","target","tagName","key","preventDefault","IntersectionObserver","entries","_handleIntersection","root","threshold","item","observe","entry","set","isIntersecting","intersectionRatio","ratios","map","get","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","scrollBy","top","behavior","_restoreSnapWhenSettled","viewportRect","getBoundingClientRect","rect","contains","width","padStart","parseFloat","getComputedStyle","scrollPaddingInlineStart","isRTL","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","removeAttribute","node","setAttribute","inert","append","prepend","_jumpScroll","_afterScrollSettles","undefined","callback","requestAnimationFrame","startLeft","lastLeft","stableFrames","waited","hasMoved","tick","currentLeft","reachedTarget","toggle","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","progress","_setControlsDisabled","controls","disabled","control","activeElement","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","name","getPropertyValue","_itemInterval","setProperty","setTimeout","upcoming","_upcomingIndex","getAttribute","NaN","_togglePlayPause","label","window","matchMedia","matches","clearTimeout","getElementFromSelector","carousel","getOrCreateInstance","slideIndex","Manipulator","getDataAttribute","carousels"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"carousel.js","sources":["../src/carousel.js"],"sourcesContent":["/**\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 { isRTL, isVisible } from './util/index.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'\n\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_POINTERDOWN = `pointerdown${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_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\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.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\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    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\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._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\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\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, 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  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","Default","autoplay","ends","interval","keyboard","pause","DefaultType","easeInOutCubic","progress","Carousel","BaseComponent","constructor","element","config","_viewport","SelectorEngine","findOne","_element","_indicatorsElement","_playPauseElement","_prevControls","find","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","Map","_playing","_config","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","next","to","_navIndex","nextWhenVisible","document","visibilityState","isVisible","prev","_clearInterval","classList","remove","_scheduleAutoplay","add","index","items","_getItems","rawIndex","Number","parseInt","_prefersReducedMotion","_canLoop","length","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","EventHandler","trigger","relatedTarget","direction","_direction","from","defaultPrevented","_isFade","_fadeTo","_scrollToIndex","dispose","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","off","_configAfterMerge","includes","active","indexOf","Math","max","on","event","_keydown","_maybeEnableCycle","_pauseFromInteraction","test","target","tagName","key","preventDefault","IntersectionObserver","entries","_handleIntersection","root","threshold","item","observe","entry","set","isIntersecting","intersectionRatio","ratios","map","get","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","min","viewportRect","getBoundingClientRect","rect","contains","width","padStart","parseFloat","getComputedStyle","scrollPaddingInlineStart","isRTL","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","removeAttribute","node","setAttribute","inert","append","prepend","_jumpScroll","scrollBy","top","toggle","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","disabled","control","activeElement","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","name","getPropertyValue","_itemInterval","setProperty","setTimeout","upcoming","_upcomingIndex","getAttribute","NaN","_togglePlayPause","label","window","matchMedia","matches","clearTimeout","getElementFromSelector","carousel","getOrCreateInstance","slideIndex","Manipulator","getDataAttribute","carousels"],"mappings":"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"}
\ No newline at end of file
index f803dfe21c0e445654e46e82064b1cb82ead1a85..0a0ee782facf8b13b9d0d4f2987074849365f4d7 100644 (file)
@@ -52,6 +52,9 @@ const SelectorEngine = {
     }
     return parents;
   },
+  closest(element, selector) {
+    return Element.prototype.closest.call(element, selector);
+  },
   prev(element, selector) {
     let previous = element.previousElementSibling;
     while (previous) {
index 6b3928be6cdd7a40664a05f83514d330e79701da..717f33a2989d57c7d6ddef30e36fdfcc723d59ff 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"selector-engine.js","sources":["../../src/dom/selector-engine.js"],"sourcesContent":["/**\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 [...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 [...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"],"names":["getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","map","sel","parseSelector","join","SelectorEngine","find","document","documentElement","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","closest","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","isDisabled","isVisible","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"selector-engine.js","sources":["../../src/dom/selector-engine.js"],"sourcesContent":["/**\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 [...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 [...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  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\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"],"names":["getSelector","element","selector","getAttribute","hrefAttribute","includes","startsWith","split","trim","map","sel","parseSelector","join","SelectorEngine","find","document","documentElement","Element","prototype","querySelectorAll","call","findOne","querySelector","children","filter","child","matches","parents","ancestor","parentNode","closest","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","isDisabled","isVisible","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMA,WAAW,GAAGC,OAAO,IAAI;AAC7B,EAAA,IAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAY,CAAC,gBAAgB,CAAC;AAErD,EAAA,IAAI,CAACD,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;AACjC,IAAA,IAAIE,aAAa,GAAGH,OAAO,CAACE,YAAY,CAAC,MAAM,CAAC;;AAEhD;AACA;AACA;AACA;AACA,IAAA,IAAI,CAACC,aAAa,IAAK,CAACA,aAAa,CAACC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACD,aAAa,CAACE,UAAU,CAAC,GAAG,CAAE,EAAE;AACtF,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAIF,aAAa,CAACC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACD,aAAa,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;MACjEF,aAAa,GAAG,CAAA,CAAA,EAAIA,aAAa,CAACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;AACnD,IAAA;AAEAL,IAAAA,QAAQ,GAAGE,aAAa,IAAIA,aAAa,KAAK,GAAG,GAAGA,aAAa,CAACI,IAAI,EAAE,GAAG,IAAI;AACjF,EAAA;EAEA,OAAON,QAAQ,GAAGA,QAAQ,CAACK,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAACC,GAAG,IAAIC,aAAa,CAACD,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AACvF,CAAC;AAED,MAAMC,cAAc,GAAG;EACrBC,IAAIA,CAACZ,QAAQ,EAAED,OAAO,GAAGc,QAAQ,CAACC,eAAe,EAAE;AACjD,IAAA,OAAO,CAAC,GAAGC,OAAO,CAACC,SAAS,CAACC,gBAAgB,CAACC,IAAI,CAACnB,OAAO,EAAEC,QAAQ,CAAC,CAAC;EACxE,CAAC;EAEDmB,OAAOA,CAACnB,QAAQ,EAAED,OAAO,GAAGc,QAAQ,CAACC,eAAe,EAAE;IACpD,OAAOC,OAAO,CAACC,SAAS,CAACI,aAAa,CAACF,IAAI,CAACnB,OAAO,EAAEC,QAAQ,CAAC;EAChE,CAAC;AAEDqB,EAAAA,QAAQA,CAACtB,OAAO,EAAEC,QAAQ,EAAE;AAC1B,IAAA,OAAO,CAAC,GAAGD,OAAO,CAACsB,QAAQ,CAAC,CAACC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,OAAO,CAACxB,QAAQ,CAAC,CAAC;EACvE,CAAC;AAEDyB,EAAAA,OAAOA,CAAC1B,OAAO,EAAEC,QAAQ,EAAE;IACzB,MAAMyB,OAAO,GAAG,EAAE;IAClB,IAAIC,QAAQ,GAAG3B,OAAO,CAAC4B,UAAU,CAACC,OAAO,CAAC5B,QAAQ,CAAC;AAEnD,IAAA,OAAO0B,QAAQ,EAAE;AACfD,MAAAA,OAAO,CAACI,IAAI,CAACH,QAAQ,CAAC;MACtBA,QAAQ,GAAGA,QAAQ,CAACC,UAAU,CAACC,OAAO,CAAC5B,QAAQ,CAAC;AAClD,IAAA;AAEA,IAAA,OAAOyB,OAAO;EAChB,CAAC;AAEDG,EAAAA,OAAOA,CAAC7B,OAAO,EAAEC,QAAQ,EAAE;IACzB,OAAOe,OAAO,CAACC,SAAS,CAACY,OAAO,CAACV,IAAI,CAACnB,OAAO,EAAEC,QAAQ,CAAC;EAC1D,CAAC;AAED8B,EAAAA,IAAIA,CAAC/B,OAAO,EAAEC,QAAQ,EAAE;AACtB,IAAA,IAAI+B,QAAQ,GAAGhC,OAAO,CAACiC,sBAAsB;AAE7C,IAAA,OAAOD,QAAQ,EAAE;AACf,MAAA,IAAIA,QAAQ,CAACP,OAAO,CAACxB,QAAQ,CAAC,EAAE;QAC9B,OAAO,CAAC+B,QAAQ,CAAC;AACnB,MAAA;MAEAA,QAAQ,GAAGA,QAAQ,CAACC,sBAAsB;AAC5C,IAAA;AAEA,IAAA,OAAO,EAAE;EACX,CAAC;AAED;AACAC,EAAAA,IAAIA,CAAClC,OAAO,EAAEC,QAAQ,EAAE;AACtB,IAAA,IAAIiC,IAAI,GAAGlC,OAAO,CAACmC,kBAAkB;AAErC,IAAA,OAAOD,IAAI,EAAE;AACX,MAAA,IAAIA,IAAI,CAACT,OAAO,CAACxB,QAAQ,CAAC,EAAE;QAC1B,OAAO,CAACiC,IAAI,CAAC;AACf,MAAA;MAEAA,IAAI,GAAGA,IAAI,CAACC,kBAAkB;AAChC,IAAA;AAEA,IAAA,OAAO,EAAE;EACX,CAAC;EAEDC,iBAAiBA,CAACpC,OAAO,EAAE;AACzB,IAAA,MAAMqC,UAAU,GAAG,CACjB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,0BAA0B,CAC3B,CAAC7B,GAAG,CAACP,QAAQ,IAAI,CAAA,EAAGA,QAAQ,CAAA,qBAAA,CAAuB,CAAC,CAACU,IAAI,CAAC,GAAG,CAAC;IAE/D,OAAO,IAAI,CAACE,IAAI,CAACwB,UAAU,EAAErC,OAAO,CAAC,CAACuB,MAAM,CAACe,EAAE,IAAI,CAACC,UAAU,CAACD,EAAE,CAAC,IAAIE,SAAS,CAACF,EAAE,CAAC,CAAC;EACtF,CAAC;EAEDG,sBAAsBA,CAACzC,OAAO,EAAE;AAC9B,IAAA,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAO,CAAC;AAErC,IAAA,IAAIC,QAAQ,EAAE;MACZ,OAAOW,cAAc,CAACQ,OAAO,CAACnB,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAI;AAC3D,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAEDyC,sBAAsBA,CAAC1C,OAAO,EAAE;AAC9B,IAAA,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAO,CAAC;IAErC,OAAOC,QAAQ,GAAGW,cAAc,CAACQ,OAAO,CAACnB,QAAQ,CAAC,GAAG,IAAI;EAC3D,CAAC;EAED0C,+BAA+BA,CAAC3C,OAAO,EAAE;AACvC,IAAA,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAO,CAAC;IAErC,OAAOC,QAAQ,GAAGW,cAAc,CAACC,IAAI,CAACZ,QAAQ,CAAC,GAAG,EAAE;AACtD,EAAA;AACF;;;;"}
\ No newline at end of file
index 508e557c186b1f0d07aa8cb5810c9b934f856db8..68cfa3b3771e70519fe3d8edcb05b155af26d7fa 100644 (file)
@@ -105,12 +105,20 @@ class Menu extends BaseComponent {
     this._floatingCleanup = null;
     this._mediaQueryListeners = [];
     this._responsivePlacements = null;
-    this._parent = this._element.parentNode;
-    this._isSubmenu = this._parent.classList?.contains('submenu');
+    this._parent = this._element.parentNode; // menu wrapper
     this._openSubmenus = new Map();
     this._submenuCloseTimeouts = new Map();
     this._hoverIntentData = null;
     this._menu = this._config.menu || this._findMenu();
+
+    // When the menu was discovered from the DOM, refine the wrapper to the closest
+    // ancestor that actually contains it, so the toggle doesn't have to be a direct
+    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still
+    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.
+    if (!this._config.menu && this._menu) {
+      this._parent = this._findWrapper(this._menu);
+    }
+    this._isSubmenu = this._parent.classList?.contains('submenu');
     this._menuOriginalParent = this._menu?.parentNode;
     this._parseResponsivePlacements();
     this._setupSubmenuListeners();
@@ -187,7 +195,17 @@ class Menu 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);
+    // Fall back to the closest ancestor that contains a menu so the toggle can be
+    // nested deeper than a direct sibling of `.menu`.
+    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`);
+    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent);
+  }
+  _findWrapper(menu) {
+    let wrapper = this._element.parentNode;
+    while (wrapper instanceof Element && !wrapper.contains(menu)) {
+      wrapper = wrapper.parentNode;
+    }
+    return wrapper instanceof Element ? wrapper : this._element.parentNode;
   }
   _completeHide(relatedTarget) {
     const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget);
@@ -474,6 +492,12 @@ class Menu extends BaseComponent {
     }
     trigger.setAttribute('aria-expanded', 'true');
     trigger.setAttribute('aria-haspopup', 'true');
+
+    // Keep the submenu transparent until Floating UI applies the first position, so
+    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)
+    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps
+    // the submenu measurable for flip/shift and focusable for keyboard navigation.
+    submenu.style.opacity = '0';
     submenu.classList.add(CLASS_NAME_SHOW);
     submenuWrapper.classList.add(CLASS_NAME_SHOW);
     const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
@@ -503,10 +527,13 @@ class Menu extends BaseComponent {
     }
     submenu.classList.remove(CLASS_NAME_SHOW);
     submenuWrapper.classList.remove(CLASS_NAME_SHOW);
-    submenu.style.position = '';
-    submenu.style.left = '';
-    submenu.style.top = '';
-    submenu.style.margin = '';
+
+    // Keep the Floating UI position styles in place while the submenu fades out.
+    // Clearing them here would let the submenu snap back to its CSS fallback
+    // (`top: 0`, over the parent menu) for the duration of the close transition,
+    // causing it to flash over the parent. They get recomputed on the next open
+    // (and the opacity gate in `_openSubmenu` hides any stale position until then).
+    submenu.style.opacity = '';
   }
   _closeAllSubmenus() {
     for (const [submenu] of this._openSubmenus) {
@@ -535,7 +562,12 @@ class Menu extends BaseComponent {
     }), shift({
       padding: 8
     })];
-    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
+    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware).then(finalPlacement => {
+      // Reveal the submenu now that it has been positioned (see `_openSubmenu`);
+      // clearing the inline opacity lets the CSS fade-in transition take over.
+      submenu.style.opacity = '';
+      return finalPlacement;
+    });
     updatePosition();
     return autoUpdate(referenceElement, submenu, updatePosition);
   }
index ceb9bd96cb7ab715d7cbc12c84867f10e7266ecf..9f34cc652e30ab464db9f8e38b7dba7177bcea42 100644 (file)
@@ -1 +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 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 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.at(-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","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","at","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
+{"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 // menu wrapper\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    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\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 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    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\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 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    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\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    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\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      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\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.at(-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","_openSubmenus","Map","_submenuCloseTimeouts","_hoverIntentData","_menu","_config","_findMenu","_findWrapper","_isSubmenu","classList","contains","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","toggle","_isShown","hide","show","isDisabled","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","_moveMenuToContainer","_createFloating","document","documentElement","closest","body","children","on","noop","focus","focusVisible","setAttribute","add","_completeHide","dispose","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","delete","update","_updateFloatingPosition","wrapper","SelectorEngine","next","prev","findOne","Element","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","opacity","cleanup","_createSubmenuFloating","set","nestedSubmenus","find","nested","nestedWrapper","get","currentSubmenuWrapper","parent","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","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","at","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
diff --git a/js/dist/range.js b/js/dist/range.js
new file mode 100644 (file)
index 0000000..77d791d
--- /dev/null
@@ -0,0 +1,214 @@
+/*!
+  * Bootstrap range.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';
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap range.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME = 'range';
+const DATA_KEY = 'bs.range';
+const EVENT_KEY = `.${DATA_KEY}`;
+const DATA_API_KEY = '.data-api';
+const EVENT_CHANGED = `changed${EVENT_KEY}`;
+const EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`;
+
+// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw
+const EVENT_INPUT = 'input';
+const EVENT_CHANGE = 'change';
+const SELECTOR_RANGE = '.form-range';
+const SELECTOR_INPUT = '.form-range-input';
+const CLASS_NAME_BUBBLE = 'form-range-bubble';
+const CLASS_NAME_TICKS = 'form-range-ticks';
+const CLASS_NAME_TICK = 'form-range-tick';
+const CLASS_NAME_TICK_LABEL = 'form-range-tick-label';
+
+// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the
+// plugin must write the prefixed names to interoperate with the rendered CSS.
+const PROPERTY_FILL = '--bs-range-fill';
+const Default = {
+  bubble: false,
+  // Show a value bubble above the thumb
+  formatter: null // (value) => string, for the bubble and tick labels
+};
+const DefaultType = {
+  bubble: '(boolean|null)',
+  formatter: '(function|null)'
+};
+
+/**
+ * Class definition
+ */
+
+class Range extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+
+    // BaseComponent bails (no `_element`) when the element can't be resolved
+    if (!this._element) {
+      return;
+    }
+    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element);
+    if (!this._input) {
+      return;
+    }
+    this._bubble = null;
+    this._bubbleText = null;
+    this._ticks = null;
+    this._updateHandler = () => this._update();
+    if (this._config.bubble) {
+      this._createBubble();
+    }
+    this._createTicks();
+    this._addEventListeners();
+    this._update();
+  }
+
+  // Getters
+  static get Default() {
+    return Default;
+  }
+  static get DefaultType() {
+    return DefaultType;
+  }
+  static get NAME() {
+    return NAME;
+  }
+
+  // Public
+  update() {
+    this._update();
+  }
+  dispose() {
+    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler);
+    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler);
+    this._bubble?.remove();
+    this._ticks?.remove();
+    super.dispose();
+  }
+
+  // Private
+  _configAfterMerge(config) {
+    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled
+    if (config.bubble === null) {
+      config.bubble = true;
+    }
+    return config;
+  }
+  _addEventListeners() {
+    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler);
+    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler);
+  }
+  _min() {
+    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min);
+  }
+  _max() {
+    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max);
+  }
+  _value() {
+    return Number.parseFloat(this._input.value);
+  }
+  _ratio() {
+    const span = this._max() - this._min();
+    return span > 0 ? (this._value() - this._min()) / span : 0;
+  }
+  _update() {
+    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS
+    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`);
+    if (this._bubbleText) {
+      this._bubbleText.textContent = this._format(this._value());
+    }
+    EventHandler.trigger(this._input, EVENT_CHANGED, {
+      value: this._value()
+    });
+  }
+  _format(value) {
+    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value);
+  }
+  _createBubble() {
+    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles
+    this._bubble = document.createElement('output');
+    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`;
+    this._bubble.setAttribute('aria-hidden', 'true');
+
+    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,
+    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.
+    const arrow = document.createElement('div');
+    arrow.className = 'tooltip-arrow';
+    this._bubbleText = document.createElement('div');
+    this._bubbleText.className = 'tooltip-inner';
+    this._bubble.append(arrow, this._bubbleText);
+    this._input.insertAdjacentElement('afterend', this._bubble);
+  }
+  _createTicks() {
+    const listId = this._input.getAttribute('list');
+    const datalist = listId ? document.getElementById(listId) : null;
+    if (!datalist) {
+      return;
+    }
+    const min = this._min();
+    const span = this._max() - min || 1;
+    const points = [];
+    for (const option of SelectorEngine.find('option', datalist)) {
+      const value = Number.parseFloat(option.value);
+      if (!Number.isNaN(value)) {
+        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks
+        const ratio = Math.min(Math.max((value - min) / span, 0), 1);
+        points.push({
+          ratio,
+          label: option.label
+        });
+      }
+    }
+    if (points.length === 0) {
+      return;
+    }
+    points.sort((a, b) => a.ratio - b.ratio);
+    this._ticks = document.createElement('div');
+    this._ticks.className = CLASS_NAME_TICKS;
+    this._ticks.setAttribute('aria-hidden', 'true');
+
+    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line
+    const stops = [0, ...points.map(point => point.ratio), 1];
+    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ');
+    for (const [index, point] of points.entries()) {
+      const tick = document.createElement('span');
+      tick.className = CLASS_NAME_TICK;
+      tick.style.gridColumnStart = `${index + 2}`;
+      if (point.label) {
+        const label = document.createElement('span');
+        label.className = CLASS_NAME_TICK_LABEL;
+        label.textContent = point.label;
+        tick.append(label);
+      }
+      this._ticks.append(tick);
+    }
+    this._element.append(this._ticks);
+  }
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {
+  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {
+    Range.getOrCreateInstance(element);
+  }
+});
+
+export { Range as default };
+//# sourceMappingURL=range.js.map
diff --git a/js/dist/range.js.map b/js/dist/range.js.map
new file mode 100644 (file)
index 0000000..b92320f
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"range.js","sources":["../src/range.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap range.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 = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\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._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","EVENT_INPUT","EVENT_CHANGE","SELECTOR_RANGE","SELECTOR_INPUT","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","Default","bubble","formatter","DefaultType","Range","BaseComponent","constructor","element","config","_element","_input","SelectorEngine","findOne","_bubble","_bubbleText","_ticks","_updateHandler","_update","_config","_createBubble","_createTicks","_addEventListeners","update","dispose","EventHandler","off","remove","_configAfterMerge","on","_min","min","Number","parseFloat","_max","max","_value","value","_ratio","span","style","setProperty","textContent","_format","trigger","String","document","createElement","className","setAttribute","arrow","append","insertAdjacentElement","listId","getAttribute","datalist","getElementById","points","option","find","isNaN","ratio","Math","push","label","length","sort","a","b","stops","map","point","gridTemplateColumns","slice","stop","index","join","entries","tick","gridColumnStart","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file
index ea41dba10d80eb763ace7dc4ad9503db206072fd..21cfc0b42f38e2b4251a71e73e9a855f823ec1b6 100644 (file)
@@ -26,6 +26,7 @@ import { getResponsivePlacement, parseResponsivePlacement, createBreakpointListe
 
 const NAME = 'tooltip';
 const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
+const ESCAPE_KEY = 'Escape';
 const CLASS_NAME_FADE = 'fade';
 const CLASS_NAME_MODAL = 'modal';
 const CLASS_NAME_SHOW = 'show';
@@ -47,6 +48,7 @@ const EVENT_FOCUSIN = 'focusin';
 const EVENT_FOCUSOUT = 'focusout';
 const EVENT_MOUSEENTER = 'mouseenter';
 const EVENT_MOUSELEAVE = 'mouseleave';
+const EVENT_KEYDOWN = 'keydown';
 const AttachmentMap = {
   AUTO: 'auto',
   TOP: 'top',
@@ -110,6 +112,7 @@ class Tooltip extends BaseComponent {
     this._isHovered = null;
     this._activeTrigger = {};
     this._floatingCleanup = null;
+    this._keydownHandler = null;
     this._templateFactory = null;
     this._newContent = null;
     this._mediaQueryListeners = [];
@@ -157,6 +160,7 @@ class Tooltip extends BaseComponent {
   }
   dispose() {
     clearTimeout(this._timeout);
+    this._removeEscapeListener();
     EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
     if (this._element.getAttribute('data-bs-original-title')) {
       this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
@@ -195,6 +199,9 @@ class Tooltip extends BaseComponent {
     await this._createFloating(tip);
     tip.classList.add(CLASS_NAME_SHOW);
 
+    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)
+    this._setEscapeListener();
+
     // 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
@@ -221,6 +228,7 @@ class Tooltip extends BaseComponent {
     if (hideEvent.defaultPrevented) {
       return;
     }
+    this._removeEscapeListener();
     const tip = this._getTipElement();
     tip.classList.remove(CLASS_NAME_SHOW);
 
@@ -505,6 +513,37 @@ class Tooltip extends BaseComponent {
     };
     EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
   }
+  _setEscapeListener() {
+    if (this._keydownHandler) {
+      return;
+    }
+    this._keydownHandler = event => {
+      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {
+        return;
+      }
+
+      // Dismiss the tooltip and consume the keystroke so it doesn't reach
+      // ancestor components (e.g. a parent dialog). This way the first Escape
+      // only closes the tooltip, and a subsequent one can close the dialog —
+      // matching the behavior of the dropdown menu.
+      event.preventDefault();
+      event.stopPropagation();
+      this.hide();
+    };
+
+    // Listen in the capture phase so this runs before the dialog's own keydown
+    // handler, and on the document so it works regardless of where focus is
+    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture
+    // phase for delegated listeners, so attach natively here.
+    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true);
+  }
+  _removeEscapeListener() {
+    if (!this._keydownHandler) {
+      return;
+    }
+    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true);
+    this._keydownHandler = null;
+  }
   _fixTitle() {
     const title = this._element.getAttribute('title');
     if (!title) {
index 104c9cc31ed44cbaeca06fc741fc0324f97ae541..a7cebd2f3db08e45af9ff9129173e0479e3948bb 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"tooltip.js","sources":["../src/tooltip.js"],"sourcesContent":["/**\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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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 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 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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n"],"names":["NAME","DISALLOWED_ATTRIBUTES","Set","CLASS_NAME_FADE","CLASS_NAME_MODAL","CLASS_NAME_SHOW","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","SELECTOR_DATA_TOGGLE","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","AttachmentMap","AUTO","TOP","RIGHT","isRTL","BOTTOM","LEFT","Default","allowList","DefaultAllowlist","animation","boundary","container","customClass","delay","fallbackPlacements","html","offset","placement","floatingConfig","sanitize","sanitizeFn","selector","template","title","trigger","DefaultType","Tooltip","BaseComponent","constructor","element","config","computePosition","TypeError","_isEnabled","_timeout","_isHovered","_activeTrigger","_floatingCleanup","_templateFactory","_newContent","_mediaQueryListeners","_responsivePlacements","tip","_parseResponsivePlacements","_setListeners","_config","_fixTitle","enable","disable","toggleEnabled","toggle","_isShown","_leave","_enter","dispose","clearTimeout","EventHandler","off","_element","closest","_hideModalHandler","getAttribute","setAttribute","_disposeFloating","_disposeMediaQueryListeners","show","style","display","Error","_isWithContent","showEvent","eventName","shadowRoot","findShadowRoot","isInTheDom","ownerDocument","documentElement","contains","defaultPrevented","_getTipElement","closestDialog","document","body","append","_createFloating","classList","add","children","on","noop","complete","_queueCallback","_isAnimated","hide","hideEvent","remove","_isWithActiveTrigger","removeAttribute","update","_updateFloatingPosition","Boolean","_getTitle","_createTipElement","_getContentForTemplate","content","_getTemplateFactory","toHtml","tipId","getUID","toString","setContent","changeContent","TemplateFactory","extraClass","_resolvePossibleFunction","_initializeOnDelegatedTarget","event","getOrCreateInstance","delegateTarget","_getDelegateConfig","_getPlacement","getResponsivePlacement","toUpperCase","execute","parseResponsivePlacement","_setupMediaQueryListeners","createBreakpointListeners","disposeBreakpointListeners","arrowElement","querySelector","autoUpdate","middleware","_getFloatingMiddleware","_getFloatingConfig","x","y","finalPlacement","middlewareData","Object","assign","position","left","top","Manipulator","setDataAttribute","arrow","arrowX","arrowY","isVertical","startsWith","right","bottom","_getOffset","split","map","value","Number","parseInt","rects","result","reference","floating","arg","offsetValue","mainAxis","crossAxis","flip","shift","push","defaultConfig","undefined","triggers","context","eventIn","eventOut","type","relatedTarget","textContent","trim","_setTimeout","handler","timeout","setTimeout","values","includes","_getConfig","dataAttributes","getDataAttributes","dataAttribute","keys","has","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getElement","key","entries","initTooltip","target"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"tooltip.js","sources":["../src/tooltip.js"],"sourcesContent":["/**\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 ESCAPE_KEY = 'Escape'\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'\nconst EVENT_KEYDOWN = 'keydown'\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._keydownHandler = 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    this._removeEscapeListener()\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    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\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    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\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 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    this._removeEscapeListener()\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 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  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\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  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n"],"names":["NAME","DISALLOWED_ATTRIBUTES","Set","ESCAPE_KEY","CLASS_NAME_FADE","CLASS_NAME_MODAL","CLASS_NAME_SHOW","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","SELECTOR_DATA_TOGGLE","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_KEYDOWN","AttachmentMap","AUTO","TOP","RIGHT","isRTL","BOTTOM","LEFT","Default","allowList","DefaultAllowlist","animation","boundary","container","customClass","delay","fallbackPlacements","html","offset","placement","floatingConfig","sanitize","sanitizeFn","selector","template","title","trigger","DefaultType","Tooltip","BaseComponent","constructor","element","config","computePosition","TypeError","_isEnabled","_timeout","_isHovered","_activeTrigger","_floatingCleanup","_keydownHandler","_templateFactory","_newContent","_mediaQueryListeners","_responsivePlacements","tip","_parseResponsivePlacements","_setListeners","_config","_fixTitle","enable","disable","toggleEnabled","toggle","_isShown","_leave","_enter","dispose","clearTimeout","_removeEscapeListener","EventHandler","off","_element","closest","_hideModalHandler","getAttribute","setAttribute","_disposeFloating","_disposeMediaQueryListeners","show","style","display","Error","_isWithContent","showEvent","eventName","shadowRoot","findShadowRoot","isInTheDom","ownerDocument","documentElement","contains","defaultPrevented","_getTipElement","closestDialog","document","body","append","_createFloating","classList","add","_setEscapeListener","children","on","noop","complete","_queueCallback","_isAnimated","hide","hideEvent","remove","_isWithActiveTrigger","removeAttribute","update","_updateFloatingPosition","Boolean","_getTitle","_createTipElement","_getContentForTemplate","content","_getTemplateFactory","toHtml","tipId","getUID","toString","setContent","changeContent","TemplateFactory","extraClass","_resolvePossibleFunction","_initializeOnDelegatedTarget","event","getOrCreateInstance","delegateTarget","_getDelegateConfig","_getPlacement","getResponsivePlacement","toUpperCase","execute","parseResponsivePlacement","_setupMediaQueryListeners","createBreakpointListeners","disposeBreakpointListeners","arrowElement","querySelector","autoUpdate","middleware","_getFloatingMiddleware","_getFloatingConfig","x","y","finalPlacement","middlewareData","Object","assign","position","left","top","Manipulator","setDataAttribute","arrow","arrowX","arrowY","isVertical","startsWith","right","bottom","_getOffset","split","map","value","Number","parseInt","rects","result","reference","floating","arg","offsetValue","mainAxis","crossAxis","flip","shift","push","defaultConfig","undefined","triggers","context","eventIn","eventOut","type","relatedTarget","key","isConnected","preventDefault","stopPropagation","addEventListener","removeEventListener","textContent","trim","_setTimeout","handler","timeout","setTimeout","values","includes","_getConfig","dataAttributes","getDataAttributes","dataAttribute","keys","has","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","getElement","entries","initTooltip","target"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AAyBA;AACA;AACA;;AAEA,MAAMA,IAAI,GAAG,SAAS;AACtB,MAAMC,qBAAqB,GAAG,IAAIC,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAE9E,MAAMC,UAAU,GAAG,QAAQ;AAE3B,MAAMC,eAAe,GAAG,MAAM;AAC9B,MAAMC,gBAAgB,GAAG,OAAO;AAChC,MAAMC,eAAe,GAAG,MAAM;AAE9B,MAAMC,sBAAsB,GAAG,gBAAgB;AAC/C,MAAMC,cAAc,GAAG,CAAA,CAAA,EAAIH,gBAAgB,CAAA,CAAE;AAC7C,MAAMI,oBAAoB,GAAG,4BAA4B;AAEzD,MAAMC,gBAAgB,GAAG,eAAe;AAExC,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,cAAc,GAAG,QAAQ;AAE/B,MAAMC,UAAU,GAAG,MAAM;AACzB,MAAMC,YAAY,GAAG,QAAQ;AAC7B,MAAMC,UAAU,GAAG,MAAM;AACzB,MAAMC,WAAW,GAAG,OAAO;AAC3B,MAAMC,cAAc,GAAG,UAAU;AACjC,MAAMC,WAAW,GAAG,OAAO;AAC3B,MAAMC,aAAa,GAAG,SAAS;AAC/B,MAAMC,cAAc,GAAG,UAAU;AACjC,MAAMC,gBAAgB,GAAG,YAAY;AACrC,MAAMC,gBAAgB,GAAG,YAAY;AACrC,MAAMC,aAAa,GAAG,SAAS;AAE/B,MAAMC,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,KAAK,EAAEC,KAAK,EAAE,GAAG,MAAM,GAAG,OAAO;AACjCC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,IAAI,EAAEF,KAAK,EAAE,GAAG,OAAO,GAAG;AAC5B,CAAC;AAED,MAAMG,OAAO,GAAG;AACdC,EAAAA,SAAS,EAAEC,gBAAgB;AAC3BC,EAAAA,SAAS,EAAE,IAAI;AACfC,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,WAAW,EAAE,EAAE;AACfC,EAAAA,KAAK,EAAE,CAAC;EACRC,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtDC,EAAAA,IAAI,EAAE,KAAK;AACXC,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACdC,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,QAAQ,EAAE,sCAAsC,GACtC,mCAAmC,GACnC,mCAAmC,GACnC,QAAQ;AAClBC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,WAAW,GAAG;AAClBlB,EAAAA,SAAS,EAAE,QAAQ;AACnBE,EAAAA,SAAS,EAAE,SAAS;AACpBC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,SAAS,EAAE,0BAA0B;AACrCC,EAAAA,WAAW,EAAE,mBAAmB;AAChCC,EAAAA,KAAK,EAAE,iBAAiB;AACxBC,EAAAA,kBAAkB,EAAE,OAAO;AAC3BC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,MAAM,EAAE,yBAAyB;AACjCC,EAAAA,SAAS,EAAE,mBAAmB;AAC9BC,EAAAA,cAAc,EAAE,wBAAwB;AACxCC,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,UAAU,EAAE,iBAAiB;AAC7BC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,KAAK,EAAE,2BAA2B;AAClCC,EAAAA,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;;AAEA,MAAME,OAAO,SAASC,aAAa,CAAC;AAClCC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;AAC3B,IAAA,IAAI,OAAOC,eAAe,KAAK,WAAW,EAAE;AAC1C,MAAA,MAAM,IAAIC,SAAS,CAAC,qEAAqE,CAAC;AAC5F,IAAA;AAEA,IAAA,KAAK,CAACH,OAAO,EAAEC,MAAM,CAAC;;AAEtB;IACA,IAAI,CAACG,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;AACtB,IAAA,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,qBAAqB,GAAG,IAAI;;AAEjC;IACA,IAAI,CAACC,GAAG,GAAG,IAAI;IAEf,IAAI,CAACC,0BAA0B,EAAE;IACjC,IAAI,CAACC,aAAa,EAAE;AAEpB,IAAA,IAAI,CAAC,IAAI,CAACC,OAAO,CAACzB,QAAQ,EAAE;MAC1B,IAAI,CAAC0B,SAAS,EAAE;AAClB,IAAA;AACF,EAAA;;AAEA;EACA,WAAWzC,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWmB,WAAWA,GAAG;AACvB,IAAA,OAAOA,WAAW;AACpB,EAAA;EAEA,WAAWpD,IAAIA,GAAG;AAChB,IAAA,OAAOA,IAAI;AACb,EAAA;;AAEA;AACA2E,EAAAA,MAAMA,GAAG;IACP,IAAI,CAACf,UAAU,GAAG,IAAI;AACxB,EAAA;AAEAgB,EAAAA,OAAOA,GAAG;IACR,IAAI,CAAChB,UAAU,GAAG,KAAK;AACzB,EAAA;AAEAiB,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,CAACjB,UAAU,GAAG,CAAC,IAAI,CAACA,UAAU;AACpC,EAAA;AAEAkB,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,CAAC,IAAI,CAAClB,UAAU,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACmB,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACC,MAAM,EAAE;AACb,MAAA;AACF,IAAA;IAEA,IAAI,CAACC,MAAM,EAAE;AACf,EAAA;AAEAC,EAAAA,OAAOA,GAAG;AACRC,IAAAA,YAAY,CAAC,IAAI,CAACtB,QAAQ,CAAC;IAE3B,IAAI,CAACuB,qBAAqB,EAAE;AAE5BC,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACC,QAAQ,CAACC,OAAO,CAAChF,cAAc,CAAC,EAAEE,gBAAgB,EAAE,IAAI,CAAC+E,iBAAiB,CAAC;IAEjG,IAAI,IAAI,CAACF,QAAQ,CAACG,YAAY,CAAC,wBAAwB,CAAC,EAAE;AACxD,MAAA,IAAI,CAACH,QAAQ,CAACI,YAAY,CAAC,OAAO,EAAE,IAAI,CAACJ,QAAQ,CAACG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAC3F,IAAA;IAEA,IAAI,CAACE,gBAAgB,EAAE;IACvB,IAAI,CAACC,2BAA2B,EAAE;IAClC,KAAK,CAACX,OAAO,EAAE;AACjB,EAAA;EAEA,MAAMY,IAAIA,GAAG;IACX,IAAI,IAAI,CAACP,QAAQ,CAACQ,KAAK,CAACC,OAAO,KAAK,MAAM,EAAE;AAC1C,MAAA,MAAM,IAAIC,KAAK,CAAC,qCAAqC,CAAC;AACxD,IAAA;IAEA,IAAI,EAAE,IAAI,CAACC,cAAc,EAAE,IAAI,IAAI,CAACtC,UAAU,CAAC,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuC,SAAS,GAAGd,YAAY,CAAClC,OAAO,CAAC,IAAI,CAACoC,QAAQ,EAAE,IAAI,CAAChC,WAAW,CAAC6C,SAAS,CAACnF,UAAU,CAAC,CAAC;AAC7F,IAAA,MAAMoF,UAAU,GAAGC,cAAc,CAAC,IAAI,CAACf,QAAQ,CAAC;AAChD,IAAA,MAAMgB,UAAU,GAAG,CAACF,UAAU,IAAI,IAAI,CAACd,QAAQ,CAACiB,aAAa,CAACC,eAAe,EAAEC,QAAQ,CAAC,IAAI,CAACnB,QAAQ,CAAC;AAEtG,IAAA,IAAIY,SAAS,CAACQ,gBAAgB,IAAI,CAACJ,UAAU,EAAE;AAC7C,MAAA;AACF,IAAA;IAEA,IAAI,CAACX,gBAAgB,EAAE;AAEvB,IAAA,MAAMtB,GAAG,GAAG,IAAI,CAACsC,cAAc,EAAE;AAEjC,IAAA,IAAI,CAACrB,QAAQ,CAACI,YAAY,CAAC,kBAAkB,EAAErB,GAAG,CAACoB,YAAY,CAAC,IAAI,CAAC,CAAC;IAEtE,IAAI;AAAEpD,MAAAA;KAAW,GAAG,IAAI,CAACmC,OAAO;IAChC,MAAMoC,aAAa,GAAG,IAAI,CAACtB,QAAQ,CAACC,OAAO,CAAC,cAAc,CAAC;AAC3D,IAAA,IAAIqB,aAAa,IAAIvE,SAAS,KAAKwE,QAAQ,CAACC,IAAI,EAAE;AAChDzE,MAAAA,SAAS,GAAGuE,aAAa;AAC3B,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACtB,QAAQ,CAACiB,aAAa,CAACC,eAAe,CAACC,QAAQ,CAAC,IAAI,CAACpC,GAAG,CAAC,EAAE;AACnEhC,MAAAA,SAAS,CAAC0E,MAAM,CAAC1C,GAAG,CAAC;AACrBe,MAAAA,YAAY,CAAClC,OAAO,CAAC,IAAI,CAACoC,QAAQ,EAAE,IAAI,CAAChC,WAAW,CAAC6C,SAAS,CAACjF,cAAc,CAAC,CAAC;AACjF,IAAA;AAEA,IAAA,MAAM,IAAI,CAAC8F,eAAe,CAAC3C,GAAG,CAAC;AAE/BA,IAAAA,GAAG,CAAC4C,SAAS,CAACC,GAAG,CAAC7G,eAAe,CAAC;;AAElC;IACA,IAAI,CAAC8G,kBAAkB,EAAE;;AAEzB;AACA;AACA;AACA;AACA,IAAA,IAAI,cAAc,IAAIN,QAAQ,CAACL,eAAe,EAAE;MAC9C,KAAK,MAAMjD,OAAO,IAAIsD,QAAQ,CAACC,IAAI,CAACM,QAAQ,EAAE;QAC5ChC,YAAY,CAACiC,EAAE,CAAC9D,OAAO,EAAE,WAAW,EAAE+D,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;IAEA,MAAMC,QAAQ,GAAGA,MAAM;AACrBnC,MAAAA,YAAY,CAAClC,OAAO,CAAC,IAAI,CAACoC,QAAQ,EAAE,IAAI,CAAChC,WAAW,CAAC6C,SAAS,CAAClF,WAAW,CAAC,CAAC;AAE5E,MAAA,IAAI,IAAI,CAAC4C,UAAU,KAAK,KAAK,EAAE;QAC7B,IAAI,CAACkB,MAAM,EAAE;AACf,MAAA;MAEA,IAAI,CAAClB,UAAU,GAAG,KAAK;IACzB,CAAC;AAED,IAAA,IAAI,CAAC2D,cAAc,CAACD,QAAQ,EAAE,IAAI,CAAClD,GAAG,EAAE,IAAI,CAACoD,WAAW,EAAE,CAAC;AAC7D,EAAA;AAEAC,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAAC5C,QAAQ,EAAE,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM6C,SAAS,GAAGvC,YAAY,CAAClC,OAAO,CAAC,IAAI,CAACoC,QAAQ,EAAE,IAAI,CAAChC,WAAW,CAAC6C,SAAS,CAACrF,UAAU,CAAC,CAAC;IAC7F,IAAI6G,SAAS,CAACjB,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACvB,qBAAqB,EAAE;AAE5B,IAAA,MAAMd,GAAG,GAAG,IAAI,CAACsC,cAAc,EAAE;AACjCtC,IAAAA,GAAG,CAAC4C,SAAS,CAACW,MAAM,CAACvH,eAAe,CAAC;;AAErC;AACA;AACA,IAAA,IAAI,cAAc,IAAIwG,QAAQ,CAACL,eAAe,EAAE;MAC9C,KAAK,MAAMjD,OAAO,IAAIsD,QAAQ,CAACC,IAAI,CAACM,QAAQ,EAAE;QAC5ChC,YAAY,CAACC,GAAG,CAAC9B,OAAO,EAAE,WAAW,EAAE+D,IAAI,CAAC;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACxD,cAAc,CAAClD,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACkD,cAAc,CAACnD,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACmD,cAAc,CAACpD,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACmD,UAAU,GAAG,IAAI,CAAA;;IAEtB,MAAM0D,QAAQ,GAAGA,MAAM;AACrB,MAAA,IAAI,IAAI,CAACM,oBAAoB,EAAE,EAAE;AAC/B,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC,IAAI,CAAChE,UAAU,EAAE;QACpB,IAAI,CAAC8B,gBAAgB,EAAE;AACzB,MAAA;AAEA,MAAA,IAAI,CAACL,QAAQ,CAACwC,eAAe,CAAC,kBAAkB,CAAC;AACjD1C,MAAAA,YAAY,CAAClC,OAAO,CAAC,IAAI,CAACoC,QAAQ,EAAE,IAAI,CAAChC,WAAW,CAAC6C,SAAS,CAACpF,YAAY,CAAC,CAAC;IAC/E,CAAC;AAED,IAAA,IAAI,CAACyG,cAAc,CAACD,QAAQ,EAAE,IAAI,CAAClD,GAAG,EAAE,IAAI,CAACoD,WAAW,EAAE,CAAC;AAC7D,EAAA;AAEAM,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAAChE,gBAAgB,IAAI,IAAI,CAACM,GAAG,EAAE;MACrC,IAAI,CAAC2D,uBAAuB,EAAE;AAChC,IAAA;AACF,EAAA;;AAEA;AACA/B,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAOgC,OAAO,CAAC,IAAI,CAACC,SAAS,EAAE,CAAC;AAClC,EAAA;AAEAvB,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,CAAC,IAAI,CAACtC,GAAG,EAAE;AACb,MAAA,IAAI,CAACA,GAAG,GAAG,IAAI,CAAC8D,iBAAiB,CAAC,IAAI,CAACjE,WAAW,IAAI,IAAI,CAACkE,sBAAsB,EAAE,CAAC;AACtF,IAAA;IAEA,OAAO,IAAI,CAAC/D,GAAG;AACjB,EAAA;EAEA8D,iBAAiBA,CAACE,OAAO,EAAE;IACzB,MAAMhE,GAAG,GAAG,IAAI,CAACiE,mBAAmB,CAACD,OAAO,CAAC,CAACE,MAAM,EAAE;IAEtDlE,GAAG,CAAC4C,SAAS,CAACW,MAAM,CAACzH,eAAe,EAAEE,eAAe,CAAC;AACtDgE,IAAAA,GAAG,CAAC4C,SAAS,CAACC,GAAG,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC5D,WAAW,CAACvD,IAAI,CAAA,KAAA,CAAO,CAAC;AAErD,IAAA,MAAMyI,KAAK,GAAGC,MAAM,CAAC,IAAI,CAACnF,WAAW,CAACvD,IAAI,CAAC,CAAC2I,QAAQ,EAAE;AAEtDrE,IAAAA,GAAG,CAACqB,YAAY,CAAC,IAAI,EAAE8C,KAAK,CAAC;AAE7B,IAAA,IAAI,IAAI,CAACf,WAAW,EAAE,EAAE;AACtBpD,MAAAA,GAAG,CAAC4C,SAAS,CAACC,GAAG,CAAC/G,eAAe,CAAC;AACpC,IAAA;AAEA,IAAA,OAAOkE,GAAG;AACZ,EAAA;EAEAsE,UAAUA,CAACN,OAAO,EAAE;IAClB,IAAI,CAACnE,WAAW,GAAGmE,OAAO;AAC1B,IAAA,IAAI,IAAI,CAACvD,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACa,gBAAgB,EAAE;MACvB,IAAI,CAACE,IAAI,EAAE;AACb,IAAA;AACF,EAAA;EAEAyC,mBAAmBA,CAACD,OAAO,EAAE;IAC3B,IAAI,IAAI,CAACpE,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAAC2E,aAAa,CAACP,OAAO,CAAC;AAC9C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACpE,gBAAgB,GAAG,IAAI4E,eAAe,CAAC;QAC1C,GAAG,IAAI,CAACrE,OAAO;AACf;AACA;QACA6D,OAAO;QACPS,UAAU,EAAE,IAAI,CAACC,wBAAwB,CAAC,IAAI,CAACvE,OAAO,CAAClC,WAAW;AACpE,OAAC,CAAC;AACJ,IAAA;IAEA,OAAO,IAAI,CAAC2B,gBAAgB;AAC9B,EAAA;AAEAmE,EAAAA,sBAAsBA,GAAG;IACvB,OAAO;AACL,MAAA,CAAC9H,sBAAsB,GAAG,IAAI,CAAC4H,SAAS;KACzC;AACH,EAAA;AAEAA,EAAAA,SAASA,GAAG;AACV,IAAA,OAAO,IAAI,CAACa,wBAAwB,CAAC,IAAI,CAACvE,OAAO,CAACvB,KAAK,CAAC,IAAI,IAAI,CAACqC,QAAQ,CAACG,YAAY,CAAC,wBAAwB,CAAC;AAClH,EAAA;;AAEA;EACAuD,4BAA4BA,CAACC,KAAK,EAAE;AAClC,IAAA,OAAO,IAAI,CAAC3F,WAAW,CAAC4F,mBAAmB,CAACD,KAAK,CAACE,cAAc,EAAE,IAAI,CAACC,kBAAkB,EAAE,CAAC;AAC9F,EAAA;AAEA3B,EAAAA,WAAWA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACjD,OAAO,CAACrC,SAAS,IAAK,IAAI,CAACkC,GAAG,IAAI,IAAI,CAACA,GAAG,CAAC4C,SAAS,CAACR,QAAQ,CAACtG,eAAe,CAAE;AAC7F,EAAA;AAEA2E,EAAAA,QAAQA,GAAG;AACT,IAAA,OAAO,IAAI,CAACT,GAAG,IAAI,IAAI,CAACA,GAAG,CAAC4C,SAAS,CAACR,QAAQ,CAACpG,eAAe,CAAC;AACjE,EAAA;EAEAgJ,aAAaA,CAAChF,GAAG,EAAE;AACjB;IACA,IAAI,IAAI,CAACD,qBAAqB,EAAE;MAC9B,MAAMzB,SAAS,GAAG2G,sBAAsB,CAAC,IAAI,CAAClF,qBAAqB,EAAE,KAAK,CAAC;MAC3E,OAAO3C,aAAa,CAACkB,SAAS,CAAC4G,WAAW,EAAE,CAAC,IAAI5G,SAAS;AAC5D,IAAA;;AAEA;AACA,IAAA,MAAMA,SAAS,GAAG6G,OAAO,CAAC,IAAI,CAAChF,OAAO,CAAC7B,SAAS,EAAE,CAAC,IAAI,EAAE0B,GAAG,EAAE,IAAI,CAACiB,QAAQ,CAAC,CAAC;IAC7E,OAAO7D,aAAa,CAACkB,SAAS,CAAC4G,WAAW,EAAE,CAAC,IAAI5G,SAAS;AAC5D,EAAA;AAEA2B,EAAAA,0BAA0BA,GAAG;AAC3B;IACA,IAAI,OAAO,IAAI,CAACE,OAAO,CAAC7B,SAAS,KAAK,QAAQ,EAAE;MAC9C,IAAI,CAACyB,qBAAqB,GAAG,IAAI;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,qBAAqB,GAAGqF,wBAAwB,CAAC,IAAI,CAACjF,OAAO,CAAC7B,SAAS,EAAE,KAAK,CAAC;IAEpF,IAAI,IAAI,CAACyB,qBAAqB,EAAE;MAC9B,IAAI,CAACsF,yBAAyB,EAAE;AAClC,IAAA;AACF,EAAA;AAEAA,EAAAA,yBAAyBA,GAAG;IAC1B,IAAI,CAAC9D,2BAA2B,EAAE;AAClC,IAAA,IAAI,CAACzB,oBAAoB,GAAGwF,yBAAyB,CAAC,MAAM;AAC1D,MAAA,IAAI,IAAI,CAAC7E,QAAQ,EAAE,EAAE;QACnB,IAAI,CAACkD,uBAAuB,EAAE;AAChC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEApC,EAAAA,2BAA2BA,GAAG;AAC5BgE,IAAAA,0BAA0B,CAAC,IAAI,CAACzF,oBAAoB,CAAC;IACrD,IAAI,CAACA,oBAAoB,GAAG,EAAE;AAChC,EAAA;EAEA,MAAM6C,eAAeA,CAAC3C,GAAG,EAAE;AACzB,IAAA,MAAM1B,SAAS,GAAG,IAAI,CAAC0G,aAAa,CAAChF,GAAG,CAAC;AACzC,IAAA,MAAMwF,YAAY,GAAGxF,GAAG,CAACyF,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAACxG,WAAW,CAACvD,IAAI,QAAQ,CAAC;;AAEzE;IACA,MAAM,IAAI,CAACiI,uBAAuB,CAAC3D,GAAG,EAAE1B,SAAS,EAAEkH,YAAY,CAAC;;AAEhE;IACA,IAAI,CAAC9F,gBAAgB,GAAGgG,UAAU,CAChC,IAAI,CAACzE,QAAQ,EACbjB,GAAG,EACH,MAAM,IAAI,CAAC2D,uBAAuB,CAAC3D,GAAG,EAAE,IAAI,EAAEwF,YAAY,CAC5D,CAAC;AACH,EAAA;AAEA,EAAA,MAAM7B,uBAAuBA,CAAC3D,GAAG,GAAG,IAAI,CAACA,GAAG,EAAE1B,SAAS,GAAG,IAAI,EAAEkH,YAAY,GAAG,IAAI,EAAE;IACnF,IAAI,CAACxF,GAAG,EAAE;AACR,MAAA;AACF,IAAA;IAEA,IAAI,CAAC1B,SAAS,EAAE;AACdA,MAAAA,SAAS,GAAG,IAAI,CAAC0G,aAAa,CAAChF,GAAG,CAAC;AACrC,IAAA;IAEA,IAAI,CAACwF,YAAY,EAAE;AACjBA,MAAAA,YAAY,GAAGxF,GAAG,CAACyF,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAACxG,WAAW,CAACvD,IAAI,CAAA,MAAA,CAAQ,CAAC;AACrE,IAAA;AAEA,IAAA,MAAMiK,UAAU,GAAG,IAAI,CAACC,sBAAsB,CAACJ,YAAY,CAAC;IAC5D,MAAMjH,cAAc,GAAG,IAAI,CAACsH,kBAAkB,CAACvH,SAAS,EAAEqH,UAAU,CAAC;IAErE,MAAM;MAAEG,CAAC;MAAEC,CAAC;AAAEzH,MAAAA,SAAS,EAAE0H,cAAc;AAAEC,MAAAA;KAAgB,GAAG,MAAM7G,eAAe,CAC/E,IAAI,CAAC6B,QAAQ,EACbjB,GAAG,EACHzB,cACF,CAAC;;AAED;AACA2H,IAAAA,MAAM,CAACC,MAAM,CAACnG,GAAG,CAACyB,KAAK,EAAE;AACvB2E,MAAAA,QAAQ,EAAE,UAAU;MACpBC,IAAI,EAAE,CAAA,EAAGP,CAAC,CAAA,EAAA,CAAI;MACdQ,GAAG,EAAE,GAAGP,CAAC,CAAA,EAAA;AACX,KAAC,CAAC;;AAEF;AACA,IAAA,IAAIP,YAAY,EAAE;AAChBA,MAAAA,YAAY,CAAC/D,KAAK,CAAC2E,QAAQ,GAAG,UAAU;AAC1C,IAAA;;AAEA;IACAG,WAAW,CAACC,gBAAgB,CAACxG,GAAG,EAAE,WAAW,EAAEgG,cAAc,CAAC;;AAE9D;AACA;AACA,IAAA,IAAIR,YAAY,IAAIS,cAAc,CAACQ,KAAK,EAAE;MACxC,MAAM;AAAEX,QAAAA,CAAC,EAAEY,MAAM;AAAEX,QAAAA,CAAC,EAAEY;OAAQ,GAAGV,cAAc,CAACQ,KAAK;AACrD,MAAA,MAAMG,UAAU,GAAGZ,cAAc,CAACa,UAAU,CAAC,KAAK,CAAC,IAAIb,cAAc,CAACa,UAAU,CAAC,QAAQ,CAAC;;AAE1F;AACA;AACAX,MAAAA,MAAM,CAACC,MAAM,CAACX,YAAY,CAAC/D,KAAK,EAAE;QAChC4E,IAAI,EAAEO,UAAU,IAAIF,MAAM,KAAK,IAAI,GAAG,CAAA,EAAGA,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE;AACxDJ,QAAAA,GAAG,EAAE,CAACM,UAAU,IAAID,MAAM,KAAK,IAAI,GAAG,CAAA,EAAGA,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE;AACxD;AACAG,QAAAA,KAAK,EAAE,EAAE;AACTC,QAAAA,MAAM,EAAE;AACV,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEAC,EAAAA,UAAUA,GAAG;IACX,MAAM;AAAE3I,MAAAA;KAAQ,GAAG,IAAI,CAAC8B,OAAO;AAE/B,IAAA,IAAI,OAAO9B,MAAM,KAAK,QAAQ,EAAE;AAC9B,MAAA,OAAOA,MAAM,CAAC4I,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,KAAK,IAAIC,MAAM,CAACC,QAAQ,CAACF,KAAK,EAAE,EAAE,CAAC,CAAC;AACnE,IAAA;AAEA,IAAA,IAAI,OAAO9I,MAAM,KAAK,UAAU,EAAE;AAChC;AACA,MAAA,OAAO,CAAC;QAAEC,SAAS;AAAEgJ,QAAAA;AAAM,OAAC,KAAK;QAC/B,MAAMC,MAAM,GAAGlJ,MAAM,CAAC;UAAEC,SAAS;UAAEkJ,SAAS,EAAEF,KAAK,CAACE,SAAS;UAAEC,QAAQ,EAAEH,KAAK,CAACG;AAAS,SAAC,EAAE,IAAI,CAACxG,QAAQ,CAAC;AACzG,QAAA,OAAOsG,MAAM;MACf,CAAC;AACH,IAAA;AAEA,IAAA,OAAOlJ,MAAM;AACf,EAAA;EAEAqG,wBAAwBA,CAACgD,GAAG,EAAE;AAC5B,IAAA,OAAOvC,OAAO,CAACuC,GAAG,EAAE,CAAC,IAAI,CAACzG,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,CAAC;AACrD,EAAA;EAEA2E,sBAAsBA,CAACJ,YAAY,EAAE;AACnC,IAAA,MAAMmC,WAAW,GAAG,IAAI,CAACX,UAAU,EAAE;AAErC,IAAA,MAAMrB,UAAU,GAAG;AACjB;AACAtH,IAAAA,MAAM,CACJ,OAAOsJ,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;AACH3J,MAAAA,kBAAkB,EAAE,IAAI,CAACgC,OAAO,CAAChC;AACnC,KAAC,CAAC;AACF;AACA4J,IAAAA,KAAK,CAAC;AACJhK,MAAAA,QAAQ,EAAE,IAAI,CAACoC,OAAO,CAACpC,QAAQ,KAAK,iBAAiB,GAAG,mBAAmB,GAAG,IAAI,CAACoC,OAAO,CAACpC;AAC7F,KAAC,CAAC,CACH;;AAED;AACA,IAAA,IAAIyH,YAAY,EAAE;AAChBG,MAAAA,UAAU,CAACqC,IAAI,CAACvB,KAAK,CAAC;AAAEvH,QAAAA,OAAO,EAAEsG;AAAa,OAAC,CAAC,CAAC;AACnD,IAAA;AAEA,IAAA,OAAOG,UAAU;AACnB,EAAA;AAEAE,EAAAA,kBAAkBA,CAACvH,SAAS,EAAEqH,UAAU,EAAE;AACxC,IAAA,MAAMsC,aAAa,GAAG;MACpB3J,SAAS;AACTqH,MAAAA;KACD;IAED,OAAO;AACL,MAAA,GAAGsC,aAAa;AAChB,MAAA,GAAG9C,OAAO,CAAC,IAAI,CAAChF,OAAO,CAAC5B,cAAc,EAAE,CAAC2J,SAAS,EAAED,aAAa,CAAC;KACnE;AACH,EAAA;AAEA/H,EAAAA,aAAaA,GAAG;IACd,MAAMiI,QAAQ,GAAG,IAAI,CAAChI,OAAO,CAACtB,OAAO,CAACoI,KAAK,CAAC,GAAG,CAAC;AAEhD,IAAA,KAAK,MAAMpI,OAAO,IAAIsJ,QAAQ,EAAE;MAC9B,IAAItJ,OAAO,KAAK,OAAO,EAAE;QACvBkC,YAAY,CAACiC,EAAE,CAAC,IAAI,CAAC/B,QAAQ,EAAE,IAAI,CAAChC,WAAW,CAAC6C,SAAS,CAAChF,WAAW,CAAC,EAAE,IAAI,CAACqD,OAAO,CAACzB,QAAQ,EAAEkG,KAAK,IAAI;AACtG,UAAA,MAAMwD,OAAO,GAAG,IAAI,CAACzD,4BAA4B,CAACC,KAAK,CAAC;AACxDwD,UAAAA,OAAO,CAAC3I,cAAc,CAAClD,aAAa,CAAC,GAAG,EAAE6L,OAAO,CAAC3H,QAAQ,EAAE,IAAI2H,OAAO,CAAC3I,cAAc,CAAClD,aAAa,CAAC,CAAC;UACtG6L,OAAO,CAAC5H,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACJ,MAAA,CAAC,MAAM,IAAI3B,OAAO,KAAKrC,cAAc,EAAE;QACrC,MAAM6L,OAAO,GAAGxJ,OAAO,KAAKxC,aAAa,GACvC,IAAI,CAAC4C,WAAW,CAAC6C,SAAS,CAAC7E,gBAAgB,CAAC,GAC5C,IAAI,CAACgC,WAAW,CAAC6C,SAAS,CAAC/E,aAAa,CAAC;QAC3C,MAAMuL,QAAQ,GAAGzJ,OAAO,KAAKxC,aAAa,GACxC,IAAI,CAAC4C,WAAW,CAAC6C,SAAS,CAAC5E,gBAAgB,CAAC,GAC5C,IAAI,CAAC+B,WAAW,CAAC6C,SAAS,CAAC9E,cAAc,CAAC;AAE5C+D,QAAAA,YAAY,CAACiC,EAAE,CAAC,IAAI,CAAC/B,QAAQ,EAAEoH,OAAO,EAAE,IAAI,CAAClI,OAAO,CAACzB,QAAQ,EAAEkG,KAAK,IAAI;AACtE,UAAA,MAAMwD,OAAO,GAAG,IAAI,CAACzD,4BAA4B,CAACC,KAAK,CAAC;AACxDwD,UAAAA,OAAO,CAAC3I,cAAc,CAACmF,KAAK,CAAC2D,IAAI,KAAK,SAAS,GAAGjM,aAAa,GAAGD,aAAa,CAAC,GAAG,IAAI;UACvF+L,OAAO,CAACzH,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACFI,QAAAA,YAAY,CAACiC,EAAE,CAAC,IAAI,CAAC/B,QAAQ,EAAEqH,QAAQ,EAAE,IAAI,CAACnI,OAAO,CAACzB,QAAQ,EAAEkG,KAAK,IAAI;AACvE,UAAA,MAAMwD,OAAO,GAAG,IAAI,CAACzD,4BAA4B,CAACC,KAAK,CAAC;UACxDwD,OAAO,CAAC3I,cAAc,CAACmF,KAAK,CAAC2D,IAAI,KAAK,UAAU,GAAGjM,aAAa,GAAGD,aAAa,CAAC,GAC/E+L,OAAO,CAACnH,QAAQ,CAACmB,QAAQ,CAACwC,KAAK,CAAC4D,aAAa,CAAC;UAEhDJ,OAAO,CAAC1H,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACJ,MAAA;AACF,IAAA;IAEA,IAAI,CAACS,iBAAiB,GAAG,MAAM;MAC7B,IAAI,IAAI,CAACF,QAAQ,EAAE;QACjB,IAAI,CAACoC,IAAI,EAAE;AACb,MAAA;IACF,CAAC;AAEDtC,IAAAA,YAAY,CAACiC,EAAE,CAAC,IAAI,CAAC/B,QAAQ,CAACC,OAAO,CAAChF,cAAc,CAAC,EAAEE,gBAAgB,EAAE,IAAI,CAAC+E,iBAAiB,CAAC;AAClG,EAAA;AAEA2B,EAAAA,kBAAkBA,GAAG;IACnB,IAAI,IAAI,CAACnD,eAAe,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,eAAe,GAAGiF,KAAK,IAAI;AAC9B,MAAA,IAAIA,KAAK,CAAC6D,GAAG,KAAK5M,UAAU,IAAI,CAAC,IAAI,CAAC4E,QAAQ,EAAE,IAAI,CAAC,IAAI,CAACT,GAAG,CAAC0I,WAAW,EAAE;AACzE,QAAA;AACF,MAAA;;AAEA;AACA;AACA;AACA;MACA9D,KAAK,CAAC+D,cAAc,EAAE;MACtB/D,KAAK,CAACgE,eAAe,EAAE;MACvB,IAAI,CAACvF,IAAI,EAAE;IACb,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAA,IAAI,CAACpC,QAAQ,CAACiB,aAAa,CAAC2G,gBAAgB,CAAC1L,aAAa,EAAE,IAAI,CAACwC,eAAe,EAAE,IAAI,CAAC;AACzF,EAAA;AAEAmB,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,IAAI,CAAC,IAAI,CAACnB,eAAe,EAAE;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACsB,QAAQ,CAACiB,aAAa,CAAC4G,mBAAmB,CAAC3L,aAAa,EAAE,IAAI,CAACwC,eAAe,EAAE,IAAI,CAAC;IAC1F,IAAI,CAACA,eAAe,GAAG,IAAI;AAC7B,EAAA;AAEAS,EAAAA,SAASA,GAAG;IACV,MAAMxB,KAAK,GAAG,IAAI,CAACqC,QAAQ,CAACG,YAAY,CAAC,OAAO,CAAC;IAEjD,IAAI,CAACxC,KAAK,EAAE;AACV,MAAA;AACF,IAAA;IAEA,IAAI,CAAC,IAAI,CAACqC,QAAQ,CAACG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAACH,QAAQ,CAAC8H,WAAW,CAACC,IAAI,EAAE,EAAE;MAClF,IAAI,CAAC/H,QAAQ,CAACI,YAAY,CAAC,YAAY,EAAEzC,KAAK,CAAC;AACjD,IAAA;IAEA,IAAI,CAACqC,QAAQ,CAACI,YAAY,CAAC,wBAAwB,EAAEzC,KAAK,CAAC,CAAA;AAC3D,IAAA,IAAI,CAACqC,QAAQ,CAACwC,eAAe,CAAC,OAAO,CAAC;AACxC,EAAA;AAEA9C,EAAAA,MAAMA,GAAG;IACP,IAAI,IAAI,CAACF,QAAQ,EAAE,IAAI,IAAI,CAACjB,UAAU,EAAE;MACtC,IAAI,CAACA,UAAU,GAAG,IAAI;AACtB,MAAA;AACF,IAAA;IAEA,IAAI,CAACA,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACyJ,WAAW,CAAC,MAAM;MACrB,IAAI,IAAI,CAACzJ,UAAU,EAAE;QACnB,IAAI,CAACgC,IAAI,EAAE;AACb,MAAA;IACF,CAAC,EAAE,IAAI,CAACrB,OAAO,CAACjC,KAAK,CAACsD,IAAI,CAAC;AAC7B,EAAA;AAEAd,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAAC8C,oBAAoB,EAAE,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAAChE,UAAU,GAAG,KAAK;IAEvB,IAAI,CAACyJ,WAAW,CAAC,MAAM;AACrB,MAAA,IAAI,CAAC,IAAI,CAACzJ,UAAU,EAAE;QACpB,IAAI,CAAC6D,IAAI,EAAE;AACb,MAAA;IACF,CAAC,EAAE,IAAI,CAAClD,OAAO,CAACjC,KAAK,CAACmF,IAAI,CAAC;AAC7B,EAAA;AAEA4F,EAAAA,WAAWA,CAACC,OAAO,EAAEC,OAAO,EAAE;AAC5BtI,IAAAA,YAAY,CAAC,IAAI,CAACtB,QAAQ,CAAC;IAC3B,IAAI,CAACA,QAAQ,GAAG6J,UAAU,CAACF,OAAO,EAAEC,OAAO,CAAC;AAC9C,EAAA;AAEA3F,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO0C,MAAM,CAACmD,MAAM,CAAC,IAAI,CAAC5J,cAAc,CAAC,CAAC6J,QAAQ,CAAC,IAAI,CAAC;AAC1D,EAAA;EAEAC,UAAUA,CAACpK,MAAM,EAAE;IACjB,MAAMqK,cAAc,GAAGjD,WAAW,CAACkD,iBAAiB,CAAC,IAAI,CAACxI,QAAQ,CAAC;IAEnE,KAAK,MAAMyI,aAAa,IAAIxD,MAAM,CAACyD,IAAI,CAACH,cAAc,CAAC,EAAE;AACvD,MAAA,IAAI7N,qBAAqB,CAACiO,GAAG,CAACF,aAAa,CAAC,EAAE;QAC5C,OAAOF,cAAc,CAACE,aAAa,CAAC;AACtC,MAAA;AACF,IAAA;AAEAvK,IAAAA,MAAM,GAAG;AACP,MAAA,GAAGqK,cAAc;MACjB,IAAI,OAAOrK,MAAM,KAAK,QAAQ,IAAIA,MAAM,GAAGA,MAAM,GAAG,EAAE;KACvD;AACDA,IAAAA,MAAM,GAAG,IAAI,CAAC0K,eAAe,CAAC1K,MAAM,CAAC;AACrCA,IAAAA,MAAM,GAAG,IAAI,CAAC2K,iBAAiB,CAAC3K,MAAM,CAAC;AACvC,IAAA,IAAI,CAAC4K,gBAAgB,CAAC5K,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;EAEA2K,iBAAiBA,CAAC3K,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAACnB,SAAS,GAAGmB,MAAM,CAACnB,SAAS,KAAK,KAAK,GAAGwE,QAAQ,CAACC,IAAI,GAAGuH,UAAU,CAAC7K,MAAM,CAACnB,SAAS,CAAC;AAE5F,IAAA,IAAI,OAAOmB,MAAM,CAACjB,KAAK,KAAK,QAAQ,EAAE;MACpCiB,MAAM,CAACjB,KAAK,GAAG;QACbsD,IAAI,EAAErC,MAAM,CAACjB,KAAK;QAClBmF,IAAI,EAAElE,MAAM,CAACjB;OACd;AACH,IAAA;AAEA,IAAA,IAAI,OAAOiB,MAAM,CAACP,KAAK,KAAK,QAAQ,EAAE;MACpCO,MAAM,CAACP,KAAK,GAAGO,MAAM,CAACP,KAAK,CAACyF,QAAQ,EAAE;AACxC,IAAA;AAEA,IAAA,IAAI,OAAOlF,MAAM,CAAC6E,OAAO,KAAK,QAAQ,EAAE;MACtC7E,MAAM,CAAC6E,OAAO,GAAG7E,MAAM,CAAC6E,OAAO,CAACK,QAAQ,EAAE;AAC5C,IAAA;AAEA,IAAA,OAAOlF,MAAM;AACf,EAAA;AAEA4F,EAAAA,kBAAkBA,GAAG;IACnB,MAAM5F,MAAM,GAAG,EAAE;AAEjB,IAAA,KAAK,MAAM,CAACsJ,GAAG,EAAEtB,KAAK,CAAC,IAAIjB,MAAM,CAAC+D,OAAO,CAAC,IAAI,CAAC9J,OAAO,CAAC,EAAE;MACvD,IAAI,IAAI,CAAClB,WAAW,CAACtB,OAAO,CAAC8K,GAAG,CAAC,KAAKtB,KAAK,EAAE;AAC3ChI,QAAAA,MAAM,CAACsJ,GAAG,CAAC,GAAGtB,KAAK;AACrB,MAAA;AACF,IAAA;IAEAhI,MAAM,CAACT,QAAQ,GAAG,KAAK;IACvBS,MAAM,CAACN,OAAO,GAAG,QAAQ;;AAEzB;AACA;AACA;AACA,IAAA,OAAOM,MAAM;AACf,EAAA;AAEAmC,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAAC5B,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,EAAE;MACvB,IAAI,CAACA,gBAAgB,GAAG,IAAI;AAC9B,IAAA;IAEA,IAAI,IAAI,CAACM,GAAG,EAAE;AACZ,MAAA,IAAI,CAACA,GAAG,CAACuD,MAAM,EAAE;MACjB,IAAI,CAACvD,GAAG,GAAG,IAAI;AACjB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA,MAAMkK,WAAW,GAAGtF,KAAK,IAAI;EAC3B,MAAMuF,MAAM,GAAGvF,KAAK,CAACuF,MAAM,CAACjJ,OAAO,CAAC/E,oBAAoB,CAAC;EACzD,IAAI,CAACgO,MAAM,EAAE;AACX,IAAA;AACF,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACApL,EAAAA,OAAO,CAAC8F,mBAAmB,CAACsF,MAAM,CAAC;AACrC,CAAC;;AAED;AACApJ,YAAY,CAACiC,EAAE,CAACR,QAAQ,EAAEzF,aAAa,EAAEZ,oBAAoB,EAAE+N,WAAW,CAAC;AAC3EnJ,YAAY,CAACiC,EAAE,CAACR,QAAQ,EAAEvF,gBAAgB,EAAEd,oBAAoB,EAAE+N,WAAW,CAAC;;;;"}
\ No newline at end of file